Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

ЖИЗНЕННЫЙ ЦИКЛ ЗАПРОСА в фреймворке Laravel кратко

Лекция



Привет, Вы узнаете о том , что такое жизненный цикл запроса в фреймворке 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.

Суммируя:

  1. Запрос от клиента приходит в public / index.php.
  2. bootstrap / start.php создает объект Application и определяет среду выполнения.
  3. Внутренний поставщик / laravel / framework / src / Illuminate / Foundation / start.php читает и применяет конфигурации и регистрирует поставщиков услуг.
  4. Файлы загружаются в приложение / запуск.
  5. app / rout.php.
  6. Объект запроса отправляется в приложение, объект ответа возвращается.
  7. Объект Response отправляется клиенту.

Теперь посмотрим повнимательнее на файлы в app/start.

BOOT-ФАЙЛЫ

Стартовые файлы вашего приложения находятся в папке 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 и это последняя возможность сделать какие-то действия перед тем как приложение завершится. Скорее всего у вас не будет необходимости использовать эти события.

ПРИЛОЖЕНИЕ 1. ЖИЗНЕННЫЙ ЦИКЛ ЗАПРОСА В ДЕТАЛЯХ

Стандартный жизненный цикл:

ЖИЗНЕННЫЙ ЦИКЛ ЗАПРОСА в фреймворке Laravel

Стандартный жизненный цикл состоит из следующих элементов:

HTTP-запрос через Маршруты (Routes) отправляется в Контроллер (Controller)
Контроллер выполняет некоторые действия в зависимости от запроса и передает данные в представления.
Отображения отображают полученные данные указанным способом, предоставляя ответ HTTP.
Существует много отклонений и различных вариантов вышеуказанной схемы, но это дает нам три основных момента, на которые следует обратить внимание:

Маршруты - app / rout.php
Контроллеры - приложение / контроллеры /
Views - приложение / views /
«Отклонения» могут быть, например, такими:

Маршруты могут возвращать сопоставления или сам ответ (объект ответа) без использования контроллеров.
До или после маршрутов, фильтры могут быть запущены (app / filters.php)
Исключения или ошибки приложения могут помешать процессу.
Отзывы на события.
Копать глубже
Более глубокое понимание жизненного цикла запроса в Laravel позволит вам точно понять, где вы можете (и должны) писать свой код.

Цикл запроса можно разделить на три части: загрузка (Loading), инициализация (Booting) и работа (Running).

Загрузка (Loading)

ЖИЗНЕННЫЙ ЦИКЛ ЗАПРОСА в фреймворке Laravel

Here are three main areas where your application can affect the framework loading process:

  1. Workbench packages. Workbench is a way to organize your code into separate packages and test them inside your application before making them packages distributed through Composer. See Workbench
  2. Runtime environment Depending on the installation environment, one or another configs, these or other start-files will be loaded.
  3. Ways Editing bootstrap / paths.php you can change the framework file structure, placing the files in places convenient for you.

Initialization (Booting)

ЖИЗНЕННЫЙ ЦИКЛ ЗАПРОСА в фреймворке Laravel

Есть 10 областей, где вы можете влиять на процесс инициализации структуры.

  1. Конфиги Конфиги влияют как на процесс инициализации, так и на процесс работы фреймворка.
  2. Поставщики услуг Всех поставщиков услуг, которые вы создали или связанные с приложением в конфиге конфиг / app.php загружаются в начале процесса инициализации. Если поставщик услуг не оставлен в стороне, вызывается его метод register ().
  3. Загрузите и примените стартовые файлы. Пусковой файлы, которые должны быть загружены, регистрируются при загрузке события.
  4. Стек промежуточного программного обеспечения разворачивается в промежуточное ПО, вложенное друг в друга, как матрешки. Верхний middeware обрабатывает запрос и вызывает промежуточное следующего уровня, и так далее. Последнее промежуточное ПО вызывает приложение. Все промежуточные программы помещаются в стек и будут вызываться снова в конце части Running.
  5. Инициализация поставщиков услуг. Метод boot () вызывается для всех зарегистрированных не отложенных поставщиков услуг.
  6. Callbacks предварительной инициализации Все функции-закрытия, зарегистрированных в App :: booting()
  7. После инициализации обратных вызовов Все функции закрывающие зарегистрированные в App :: booted () называется. Файлы запуска, зарегистрированные в шаге 3 загружены.
  8. Глобальные стартовые файлы. Прежде всего, это app / start / global.php, затем, если выполняется artisan-com ***, то app / start / artisan.php.
  9. Файл запуска для среды выполнения. Файл выполнен, который имеет такое же имя файла в качестве имени среды выполнения, app / start / {environment} .php
  10. Маршруты Выполненного приложения / routes.php. Вы будете редактировать этот файл чаще всего во время разработки вашего приложения.

Выполнение (Running)

ЖИЗНЕННЫЙ ЦИКЛ ЗАПРОСА в фреймворке Laravel

10 областей, где вы можете влиять на процесс выполнения:

  1. Режим обслуживания Если вы зарегистрировали функцию-подписчика режима обслуживания и приложение находится в этом режиме, эта функция выполняется.

  2. Фильтр before уровня приложения Если у вас есть фильтры, зарегистрированные в App::before(), они выполняются.

  3. Фильтры before в роутах. Если у вас есть фильтры before в роутах, они выполняются.

  4. Исполнение запроса. После разбора, к какому роуту относится запрос, вызывается экшн нужного контроллера или коллбэк роута.

  5. Фильтры after в роутах. Если у вас есть фильтры after в роутах, они выполняются.

  6. Фильтр after уровня приложения Если у вас есть фильтры, зарегистрированные в App::after(), они выполняются.

  7. Стек middleware разворачивается вверх Это точка, где объект Response передается вверх по стеку middlewares. Каждый middleware может изменять этот объект.

  8. Middleware shutdown. Если у вас есть middleware, которые реализуют TerminableInterface, вызывается метод shutdown() этих middleware.

  9. Коллбэки finish Если у вас есть функции, зарегистрированные в App::finish(), они выполняются.

  10. Коллбэки shutdown Если у вас есть функции, зарегистрированные в App::shutdown(), они выполняются.

В заключение, эта статья об жизненный цикл запроса в фреймворке laravel подчеркивает важность того что вы тут, расширяете ваше сознание, знания, навыки и умения. Надеюсь, что теперь ты понял что такое жизненный цикл запроса в фреймворке laravel и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Фреймворки. Famworks ( программная платформа)

создано: 2016-02-11
обновлено: 2021-03-13
132798



Рейтиг 8 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Фреймворки. Famworks ( программная платформа)

Термины: Фреймворки. Famworks ( программная платформа)