Страница 1 из 1
Классы в модели или это безобразие.
Добавлено: 2019.02.23, 23:02
Vladbara705
Здравствуйте.
Никак не могу найти ответ на свой вопрос.
Допустим, есть задание :
Определить по введенным в поле цифрам через запятую геометрическая это прогрессия или нет.
Дак вот, в модели мне нужно следовать канонам ООП (создание классов, которые отвечают каждый за свое) или же умещать все а разные методы под одним классом, который наследован от model?
Нужно ли в моделе вообще создавать классы или это делается где то в другом месте?
Прошу натолкнуть на правильный путь.
Re: Классы в модели или это безобразие.
Добавлено: 2019.02.23, 23:36
samdark
Следовать ООП.
Re: Классы в модели или это безобразие.
Добавлено: 2019.02.24, 10:05
Vladbara705
Это значит, что другие классы должны работать (вызываться) классом, который наследуется от model? А класс наследуемый от model в свою очередь работает с контроллером. Правильно?
И прошу объяснить в каком случае используется репозиторий?
Re: Классы в модели или это безобразие.
Добавлено: 2019.02.24, 11:28
anton_z
Код: Выделить всё
class ProgressionInput
{
/**
* @var string
*/
private $input;
public function __construct(string $input)
{
$this->input = $input;
}
public function isProgression() : bool
{
//здесь будет код, который определяет, прогрессия это или нет, если прогессия return true, нет return false
}
}
Далее этот класс можно использовать в классе формы (или где угодно, зависит от задачи), для определения, является ли строка $input прогрессией.
Re: Классы в модели или это безобразие.
Добавлено: 2019.02.24, 15:56
Vladbara705
Ничего не понимаю))
Вот есть у нас например модель:
Код: Выделить всё
<?php
namespace app\models;
use Yii;
use yii\base\Model;
class Geometry extends Model
{
public $progression;
public function rules()
{
return [
[['progression'], 'required','message' => 'Заполните поле'],
[['progression'], 'match', 'pattern' => '~^(?:|(?:\d+\,*)*\d+)$~', 'message' => 'Поле может содержать только цифры и запятые']
];
}
}
Могу ли я сделать так:
Код: Выделить всё
<?php
namespace app\models;
use Yii;
use yii\base\Model;
class Geometry extends Model
{
public $progression;
public function rules()
{
return [
[['progression'], 'required','message' => 'Заполните поле'],
[['progression'], 'match', 'pattern' => '~^(?:|(?:\d+\,*)*\d+)$~', 'message' => 'Поле может содержать только цифры и запятые']
];
}
public function GeometryFinish()
{
$GeometryDefine= new GeometryDefine();
return $GeometryDefine->GeometryDefine();
}
}
class GeometryArray
{
public function GeometryArray()
{
//здесь код, который будет разбивать текст из поле ввода на массив
}
}
class GeometryDefine
{
public function GeometryDefine()
{
//здесь код, который будет определять прогрессия это или нет
}
// здесь, например, другие нужные методы
}
То есть, в модели я создал несколько других классов, которые отвечают каждый за свое.
Затем, в классе Geometry, который наследуется от model я буду передавать все в контроллер.
Прошу не смотреть на правильность кода, писал здесь, в редакторе.
Вопрос в том, можно ли в модели создавать другие классы и бизнес-логику хранить там ?
Или это делается в другом месте ?
Re: Классы в модели или это безобразие.
Добавлено: 2019.02.27, 14:29
anton_z
Vladbara705 писал(а): ↑2019.02.24, 15:56
Вопрос в том, можно ли в модели создавать другие классы и бизнес-логику хранить там ?
Или это делается в другом месте ?
Конечно, можете. Главное чтобы было тестируемо.