Лекция
Привет, Вы узнаете о том , что такое жизненный цикл запроса в фреймворке laravel, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое жизненный цикл запроса в фреймворке laravel , настоятельно рекомендую прочитать все из категории Фреймворки. Famworks ( программная платформа).
Когда вы используете что то, вы получаете от нее гораздо больше удовольствия, когда понимаете, как она работает. Разработка приложений не является исключением. Когда вы точно понимаете, как функционирует ваш инструмент разработки, вы можете использовать его более уверенно - не просто копируя «волшебные» фрагменты в руководство или другие приложения, но точно зная, что вы хотите получить. Цель этого документа - дать вам хорошее представление о том, как работает фреймворк Laravel. В дополнение к этому мы рассмотрим файлы запуска и события приложения (события приложения).
Не расстраивайтесь, если сначала вы не поймете какие-либо термины. Просто попытайтесь получить общее представление о том, что происходит, и ваши знания будут расти по мере изучения других частей этого руководства.
Используя правила .htaccess Apache или Nginx или другой веб-сервер, все запросы отправляются в файл public / index.php. Отсюда Laravel начинает процесс обработки запроса и тут же возвращает ответ пользователю.
Конечно, наиболее важной концепцией при изучении процесса начальной загрузки Laravel является поставщик услуг (буквально «поставщик услуг», далее «поставщик услуг»). Вы можете найти список поставщиков услуг в файле config / app.php в массиве поставщиков. Эти провайдеры являются основным механизмом настройки (начальной загрузки) функционала Laravel. Но прежде чем разбираться в их работе подробно, вернемся к public / index.php. После его вызова файл bootstrap / start.php представляет собой bootstrap / start.php, в котором создается объект Application, который также служит контейнером IoC.
После создания объекта Application устанавливаются пути к некоторым важным папкам каркаса и устанавливаются критерии для параметров среды. Затем вызывается сценарий настройки фреймворка, который помимо настройки часового пояса, уровня error_reporting и т. Д. Делает очень важную вещь - регистрация поставщиков услуг, объявленная в config / app.php.
У простых поставщиков услуг есть только один метод: register (). Этот метод вызывается, когда поставщик услуг регистрируется в объекте Application. В рамках этого метода поставщики услуг регистрируют некоторые свои вещи в контейнере IoC. По сути, каждый поставщик услуг как поставщик услуг добавляет одну или несколько функций закрытия к контейнеру, что позволяет вам получить доступ к этим «услугам» в вашем приложении. Например, QueueServiceProvider регистрирует функции закрытия, которые разрешают различные классы, связанные с очередями. Конечно, поставщиков услуг можно использовать для любых действий по настройке инфраструктуры, а не только для регистрации вещей с помощью контейнера IoC. Поставщик услуг может регистрировать прослушиватели событий, просматривать композиторов, команды Artisan и т. Д.
После регистрации всех поставщиков услуг файлы загружаются из приложения / запуска. Затем app / rout.php, и в зависимости от того, какой маршрут выбран для работы, объект Request отправляется в Application.
Суммируя:
Теперь посмотрим повнимательнее на файлы в app/start.
Стартовые файлы вашего приложения находятся в папке app / start. Об этом говорит сайт https://intellect.icu . По умолчанию их три: artisan.php, global.php и local.php.
Вы можете узнать о файле artisan.php в разделе Artisan.
В частности, файл global.php содержит регистрацию Logger и подключение файла фильтра app / filters.php. Вы можете добавить к нему то, что вы хотите - этот файл вызывается при каждом запросе, независимо от текущей среды выполнения. Файл local.php, как следует из названия, подключается только тогда, когда приложение работает в локальной среде выполнения. Подробнее о средах исполнения и их конфигурации вы можете узнать в соответствующем разделе - Конфигурация.
Если в вашем приложении есть несколько других сред выполнения, например, production, вы можете создать production.php. Он будет подключаться, когда приложение вызывается в соответствующей среде.
Что поместить в стартовые файлы
Загрузочные файлы - это место для кода, который загружает ваше приложение. Например, вы можете зарегистрировать просмотр композиторов там, установить настройки ведения журнала, установить некоторые настройки PHP, которые нужны вашему приложению. Конечно, вы не должны помещать абсолютно весь код инициализации в стартовые файлы, так как в этом случае легко запутаться в этом коде. Если вы понимаете, что в стартовых файлах есть свалка мусора, выделите часть кода инициализации поставщикам услуг.
Регистрация обработчиков событий
Вы также можете делать пред- или пост-обработку запроса, регистрируя обработчики событий before,after, close, finish и shutdown:
App::before(function() { // }); App::after(function($request, $response) { // });
Эти обработчики будут запущены соответственно до и после каждого вызова в вашем приложении. Эти события полезны, если вам надо фильтровать запрос или модифицировать ответ глобально для всего приложения. Вы можете зарегистрировать эти обработчики в глобальном старт-файле или в одном из ваших сервис-провайдеров.
Вы также можете зарегистрировать событие, которое вызовется по совпадению роута (маршрута). Событие запускается перед запуском роута.
Route::matched(function($route, $request) { // });
Событие finish вызывается после того, как ваше приложение отсылает сформированный ответ клиенту. Событие shutdown вызывается немедленно после всех обработчиков события finish и это последняя возможность сделать какие-то действия перед тем как приложение завершится. Скорее всего у вас не будет необходимости использовать эти события.
Стандартный жизненный цикл состоит из следующих элементов:
HTTP-запрос через Маршруты (Routes) отправляется в Контроллер (Controller)
Контроллер выполняет некоторые действия в зависимости от запроса и передает данные в представления.
Отображения отображают полученные данные указанным способом, предоставляя ответ HTTP.
Существует много отклонений и различных вариантов вышеуказанной схемы, но это дает нам три основных момента, на которые следует обратить внимание:
Маршруты - app / rout.php
Контроллеры - приложение / контроллеры /
Views - приложение / views /
«Отклонения» могут быть, например, такими:
Маршруты могут возвращать сопоставления или сам ответ (объект ответа) без использования контроллеров.
До или после маршрутов, фильтры могут быть запущены (app / filters.php)
Исключения или ошибки приложения могут помешать процессу.
Отзывы на события.
Копать глубже
Более глубокое понимание жизненного цикла запроса в Laravel позволит вам точно понять, где вы можете (и должны) писать свой код.
Цикл запроса можно разделить на три части: загрузка (Loading), инициализация (Booting) и работа (Running).
Загрузка (Loading)
Here are three main areas where your application can affect the framework loading process:
Initialization (Booting)
Есть 10 областей, где вы можете влиять на процесс инициализации структуры.
10 областей, где вы можете влиять на процесс выполнения:
Режим обслуживания Если вы зарегистрировали функцию-подписчика режима обслуживания и приложение находится в этом режиме, эта функция выполняется.
Фильтр before уровня приложения Если у вас есть фильтры, зарегистрированные в App::before(), они выполняются.
Фильтры before в роутах. Если у вас есть фильтры before в роутах, они выполняются.
Исполнение запроса. После разбора, к какому роуту относится запрос, вызывается экшн нужного контроллера или коллбэк роута.
Фильтры after в роутах. Если у вас есть фильтры after в роутах, они выполняются.
Фильтр after уровня приложения Если у вас есть фильтры, зарегистрированные в App::after(), они выполняются.
Стек middleware разворачивается вверх Это точка, где объект Response передается вверх по стеку middlewares. Каждый middleware может изменять этот объект.
Middleware shutdown. Если у вас есть middleware, которые реализуют TerminableInterface, вызывается метод shutdown() этих middleware.
Коллбэки finish Если у вас есть функции, зарегистрированные в App::finish(), они выполняются.
В заключение, эта статья об жизненный цикл запроса в фреймворке laravel подчеркивает важность того что вы тут, расширяете ваше сознание, знания, навыки и умения. Надеюсь, что теперь ты понял что такое жизненный цикл запроса в фреймворке laravel и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Фреймворки. Famworks ( программная платформа)
Комментарии
Оставить комментарий
Фреймворки. Famworks ( программная платформа)
Термины: Фреймворки. Famworks ( программная платформа)