Laravel - Жизненный цикл

11 December 2019
Dislike
0
Views
174
Laravel - Жизненный цикл

# Введение

# Обзор жизненного цикла

# Фокус на сервис-провайдеры

 

 

ВВЕДЕНИЕ

 

При использовании любого инструмента в "реальном мире" вы чувствуете больше уверенности, когда понимаете, как он устроен. Разработка приложений — не исключение. Когда вы понимаете каким образом функционируют ваши средства разработки, то чувствуете себя более комфортно и уверенно.

 

Задача этого документа - дать вам хороший поверхностный обзор того, как работает фреймворк Laravel. Чем лучше вы узнаете фреймворк, тем меньше в нем остается "волшебства", и тем более уверенно вы будете создавать приложения. Не отчаивайтесь, если не поймете всё сразу! Постарайтесь просто получить базовое понимание того, что происходит, и ваши знания будут расти по мере изучения других разделов документации.

 

 

 

ОБЗОР ЖИЗНЕННОГО ЦИКЛА

 

Первые шаги

 

Входная точка для всех запросов к приложению Laravel - файл public/index.php. Все запросы направляются в этот файл настройками вашего веб-сервера (Apache / nginx). Файл index.php не содержит много кода. Скорее, это просто отправная точка для загрузки всего остального фреймворка.

 

Файл index.php загружает автозагрузчик, который сгенерировал Composer, а затем извлекает экземпляр Laravel-приложения из скрипта bootstrap/app.php. Первое действие самого Laravel - создать экземпляр приложения / сервис-контейнера.

 

 

Ядра HTTP / Console

 

Затем входящий запрос посылается либо в HTTP-ядро, либо в ядро консоли, в зависимости от типа этого запроса. Эти два ядра служат центральным местом, через которое протекают все запросы. Пока давайте рассмотрим HTTP-ядро, которое расположено в app/Http/Kernel.php.

 

HTTP-ядро наследует класс Illuminate\Foundation\Http\Kernel , который определяет массив загрузчиков bootstrappers, которые будут запущены перед выполнением запроса. Эти загрузчики настраивают обработку ошибок, ведение журналов, определяют среду приложения и выполняют другие задачи, которые надо выполнить перед самой обработкой запроса.

 

HTTP-ядро также определяет список HTTP посредников, через которые должны пройти все запросы, прежде чем будут обработаны приложением. Эти посредники обрабатывают чтение и запись HTTP-сессии, определяя, находится ли приложение в режиме обслуживания, проверяя CSRF-токен и др.

 

Принцип действия метода handle HTTP-ядра довольно прост: получить Request и вернуть Response. Представьте ядро в виде большого черного ящика, который представляет собой всё ваше приложение. Наполняйте его HTTP-запросами и он будет возвращать HTTP-ответы.

 

 

Сервис-провайдеры

 

Одно из важнейших действий ядра при загрузке — загрузка сервис-провайдеров для вашего приложения. Все сервис-провайдеры настраиваются в конфиге config/app.php массива providers. Сначала будет вызван метод register для всех сервис-провайдеров, а когда все они будут зарегистрированы, будет вызван метод boot.

 

Сервис-провайдеры отвечают за начальную загрузку всевозможных компонентов фреймворка: таких как БД, очередь, проверка ввода и маршрутизация. Сервис-провайдеры — важнейший элемент всего процесса начальной загрузки Laravel, так как они отвечают за загрузку и настройку всех возможностей фреймворка.

 

 

Выполнение запроса

 

Как только все сервис-провайдеры зарегистрированы и приложение загружено, Request поступает в роутер для обработки. Роутер отправит запрос по роуту или контроллеру, а также запустит посредника, соответствующего роуту.

 

 

 

ФОКУС НА СЕРВИС-ПРОВАЙДЕРЫ

 

Сервис-провайдеры — поистине ключ к инициализации и настройке Laravel-приложения. Создаётся экземпляр приложения, регистрируются сервис-провайдеры, и запрос передается в загруженное приложение. Всё действительно просто!

 

Очень важно иметь хорошее понимание того, как Laravel-приложение строится и загружается через сервис-провайдеры. Конечно, сервис-провайдеры вашего приложения по-умолчанию хранятся в директории app/Providers.

 

Основной файл, на который вам надо обратить внимание - AppServiceProvider. По умолчанию он почти пустой. Этот провайдер является отличным местом для добавления в ваше приложение собственной начальной загрузки и привязок сервис-контейнера. Конечно, в случае больших приложений, возможно вы захотите создать несколько файлов сервис-провайдеров, каждый со своей специализацией.

 

Источник

 

Вопросы / Комментарии / Отзывы