Правильно ли передавать нужные объекты аргументами метода? Есть классы 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
161 +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 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 654 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир