Я не понимаю, зачем нам нужен конструктор, и кто-то может объяснить мне этот код из моего контроллера:
public function __construct(MerchantService $merchantService, PaymentService $paymentService){
$this->merchantService = $merchantService;
$this->paymentService = $paymentService;
}
Я работаю над админкой с laravel. и наш босс хочет, чтобы структура была такой:
контроллер -> сервис -> репозиторий -> модальный -> база данных
это довольно просто, когда я иду по этому маршруту:
контроллер -> модальный -> база данных.
но я должен следовать за первым. Приведенный выше код является примером из контроллера
в приведенном выше коде есть 2 услуги, MerchantService
а также PaymentService
, но я не понимаю, что именно делает конструктор с Merchant service
переменная и переменная платежа в качестве параметров, это инициирование объекта Merchant service
а также PaymentService
??
Сервисный контейнер Laravel — это мощный инструмент для управления зависимостями классов и выполнения внедрения зависимостей. Внедрение зависимостей — это причудливая фраза, которая, по сути, означает это: зависимости класса «внедряются» в класс через конструктор или, в некоторых случаях, методы «установки».
public function __construct(UserRepository $users)
{
$this->users = $users;
}
В этом примере UserController необходимо извлечь пользователей из источника данных. Итак, мы добавим сервис, способный извлекать пользователей. В этом контексте наш UserRepository, скорее всего, использует Eloquent для извлечения информации о пользователях из базы данных. Однако, поскольку хранилище внедрено, мы можем легко заменить его другой реализацией. Мы также можем легко «насмехаться» или создавать фиктивную реализацию UserRepository при тестировании нашего приложения.
Это шаблон дизайна, он называется depedency injection
,
Это хороший способ работы, поэтому вы можете легко писать тесты, менять службы и многое другое.
Вы можете прочитать больше информации о dependecy injection
здесь на самом себе, или же здесь, в Википедии.