Правильно ли передавать нужные объекты аргументами метода? Есть классы Controller и Saver. Контроллер в методе создаёт EntrySaver, передавая ему в конструктор из своих свойств Request и Response. Затем он дёргает разные методы сейвера, после чего (если методы вернули нужные значения) запускает метод $saver->save()...
Но! Чтобы сохранить данные (они переданы в объекте Request), сейверу нужны еще два объекта - ObjectFacroty и Assembler. Нормально ли будет передать эти объекты методу ->save() или же надо передавать их в самом начале - конструктору сейвера?class Controller
{
...
public function add()
{
...
$saver = new Saver($this->request, $this->response);
...
$saver->check();
...
$saver->save($this->p_factory->getObjectFactory(), $this->factory->getAssembler());
...
}

...
}

21 Авг 2019 в 07:06
190 +1
0
Ответы
1

В данном случае, правильнее было бы передавать ObjectFactory и Assembler в конструктор класса Saver, а не в метод save(). В конструкторе можно было бы сохранить эти объекты как свойства класса Saver и использовать их внутри метода save(), не передавая их каждый раз в качестве аргументов.

Примерно так:

class Saver
{
private $request;
private $response;
private $objectFactory;
private $assembler;
public function __construct($request, $response, $objectFactory, $assembler)
{
$this->request = $request;
$this->response = $response;
$this->objectFactory = $objectFactory;
$this->assembler = $assembler;
}
public function check()
{
// выполнение проверок
}
public function save()
{
// использование $this->objectFactory и $this->assembler для сохранения данных
}
}
class Controller
{
public function add()
{
$saver = new Saver($this->request, $this->response, $this->p_factory->getObjectFactory(), $this->factory->getAssembler());
$saver->check();
$saver->save();
}
}

Такая структура кода обеспечивает более чистый и понятный код, где все необходимые зависимости передаются в конструкторе, что делает код более модульным и удобным для тестирования и поддержки.

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир