2.2. Сервис-контейнер
1. Введение
Сервис-контейнер Laravel — это мощный инструмент для управления зависимостями классов и выполнения внедрения зависимостей. Внедрение зависимостей — это изящный термин, который по сути означает следующее: зависимости классов "внедряются" в класс через конструктор или, в некоторых случаях, методы "сеттеры".
Рассмотрим простой пример:
<?php namespace App\Http\Controllers; use App\Services\AppleMusic;use Illuminate\View\View; class PodcastController extends Controller{ /** * Create a new controller instance. */ public function __construct( protected AppleMusic $apple, ) {} /** * Show information about the given podcast. */ public function show(string $id): View { return view('podcasts.show', [ 'podcast' => $this->apple->findPodcast($id) ]); }}
В этом примере PodcastController
нужно получить подкасты из источника данных, такого как Apple
Music. Поэтому мы внедрим сервис, который способен получать подкасты. Поскольку сервис
внедряется, мы можем легко "заменить" его или создать фиктивную реализацию сервиса AppleMusic
при
тестировании нашего приложения.
Глубокое понимание сервис-контейнера Laravel необходимо для создания мощных и крупных приложений, а также для участия в разработке самого ядра Laravel.