Twitt
@Twitt

В чём разница между этими двумя отрывками кода?

Да, не совсем понимаю суть DI, хоть сколько и читал, но понял лишь то, что в конструктор класса надо передавать объект другого класса, и потом объект переданного класса передавать в свойство (ну типо как вот тут):
class Table {
   public $cup;
  public function __construct(Cup $cup) {
  $this->cup = $cup;
  }
}


И вот в Laravel есть такое: когда передается реквест в экшн, то он приходит параметром, и это выглядит следующим образом:
public function update(RequestUpdatePost $request, $id) {}

Однако, я попробовал сделать так:
public function update($id) {
  $request = new RequestUpdatePost;

И результат вышел тот же. В чем принципиальная разница с отрывками этих двух кодов?
  • Вопрос задан
  • 257 просмотров
Пригласить эксперта
Ответы на вопрос 2
RequestUpdatePost класс наследован от базового Request'а в нем обычно описывают правила валидации запроса, если запрос не валиден, полетят ошибки и в твой метод такой запрос не пройдет
Пример как это может выглядеть:
448bb42f0716411bb6e8c97640d9513d.jpg
Ответ написан
SerafimArts
@SerafimArts
Senior Notepad Reader
DI решает проблему скрытых зависимостей. Явное всегда лучше неявного. И хоть второй вариант не критичен, но как только класс RequestUpdatePost потребует больше зависимостей - вам придётся их откуда-то получать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы