метод построения в php laravel мне не очень понятен

Я не понимаю, зачем нам нужен конструктор, и кто-то может объяснить мне этот код из моего контроллера:

    public function __construct(MerchantService $merchantService,    PaymentService $paymentService){
$this->merchantService = $merchantService;
$this->paymentService = $paymentService;
}

Я работаю над админкой с laravel. и наш босс хочет, чтобы структура была такой:

контроллер -> сервис -> репозиторий -> модальный -> база данных

это довольно просто, когда я иду по этому маршруту:

контроллер -> модальный -> база данных.

но я должен следовать за первым. Приведенный выше код является примером из контроллера

в приведенном выше коде есть 2 услуги, MerchantService а также PaymentService, но я не понимаю, что именно делает конструктор с Merchant service переменная и переменная платежа в качестве параметров, это инициирование объекта Merchant service а также PaymentService??

1

Решение

Сервисный контейнер Laravel — это мощный инструмент для управления зависимостями классов и выполнения внедрения зависимостей. Внедрение зависимостей — это причудливая фраза, которая, по сути, означает это: зависимости класса «внедряются» в класс через конструктор или, в некоторых случаях, методы «установки».

public function __construct(UserRepository $users)
{
$this->users = $users;
}

В этом примере UserController необходимо извлечь пользователей из источника данных. Итак, мы добавим сервис, способный извлекать пользователей. В этом контексте наш UserRepository, скорее всего, использует Eloquent для извлечения информации о пользователях из базы данных. Однако, поскольку хранилище внедрено, мы можем легко заменить его другой реализацией. Мы также можем легко «насмехаться» или создавать фиктивную реализацию UserRepository при тестировании нашего приложения.

https://laravel.com/docs/5.3/container

1

Другие решения

Это шаблон дизайна, он называется depedency injection,
Это хороший способ работы, поэтому вы можете легко писать тесты, менять службы и многое другое.

Вы можете прочитать больше информации о dependecy injection здесь на самом себе, или же здесь, в Википедии.

0