Может войдёшь?
Черновики Написать статью Профиль

Прохождение запроса

перевод документация 4.x

  1. 1. Введение
  2. 2. Прохождение запроса
  3. 3. Старт-файлы
    1. 3.1. Что помещать в старт-файлы
  4. 4. События
Этот перевод актуален для англоязычной документации на (ветка 4.2) , (ветка 4.1) и (ветка 4.0). Опечатка? Выдели и нажми Ctrl+Enter.

Введение

При использовании любого инструмента в «реальном мире» вы чувствуете больше уверенности, когда понимаете, как работает этот инструмент. Разработка приложений — не исключение. Когда вы понимаете, как функционируют ваши средства разработки, вы чувствуете себя более комфортно и уверенно. Задача этого документа состоит в том, чтобы дать вам хороший поверхностный обзор того, как «работает» фреймворк Laravel. Чем лучше вы знаете фреймворк, тем меньше в нём остаётся «волшебства», и вы более уверенно создаёте приложения. В дополнение к поверхностному обзору прохождения запроса мы рассмотрим старт-файлы и события приложения.

Не отчаивайтесь, если не всё сразу поймёте! Постарайтесь просто получить базовое понимание того, что происходит, и ваши знания будут расти по мере изучения других разделов документации.

+ 4.1

добавлено в 4.1 ()

Прохождение запроса

Все запросы в вашем приложении управляются через сценарий public/index.php. При использовании Apache файл .htaccess, который поставляется с Laravel, обрабатывает передачу всех запросов в index.php. С этого момента Laravel начинается процесс обработки запроса и возврата ответа клиенту. Будет полезно получить общее представление о процессе автозагрузки Laravel, поэтому сейчас рассмотрим это!

Наиболее важным понятием при изучении процесса автозагрузки Laravel является поставщик услуг. Вы можете найти список поставщиков услуг в вашем конфигурационном файле app/config/app.php в массиве providers. Эти поставщики служат в качестве основного механизма автозагрузки для Laravel. Но прежде, чем мы окунёмся в поставщиков услуг, давайте вернёмся к index.php. После того, как запрос попадёт в ваш файл index.php, будет загружен файл bootstrap/start.php. Этот файл создаёт новый объект Laravel PHPApplication, который также служит в качестве IoC-контейнера.

После создания объекта PHPApplication, будут заданы несколько путей проекта и будет выполнено определение окружения. Далее будет вызван внутренний сценарий автозагрузки Laravel. Этот файл находится глубоко внутри Laravel и задаёт ещё несколько настроек на основе ваших конфигурационных файлов, например, часовой пояс, сообщения об ошибках и т.д. Но кроме установки этих довольно тривиальных параметров конфигурации, он также делает кое-что очень важное: регистрирует всех поставщиков услуг, настроенных для вашего приложения.

Простые поставщики услуг имеют только один метод — PHPregister(). Этот метод PHPregister() вызывается, когда поставщик услуг зарегистрирован с помощью объекта приложения через собственный метод PHPregister() приложения. В этом методе поставщик услуг регистрирует вещи с помощью IoC-контейнера. По сути, каждый поставщик услуг привязывает одну или более функцию-замыкание) к контейнеру, что позволяет вам получать доступ к этим привязанным услугам в вашем приложении. Например, PHPQueueServiceProvider регистрирует функции-замыкания, которые извлекают различные классы, связанные с очередями. Конечно поставщики услуг могут использоваться для любых задач автозагрузки, а не только для регистрации вещей в контейнерах IoC. Поставщик услуг может регистрировать обработчики событий, построители представлений, команды Artisan и многое другое.

После того как все поставщики услуг зарегистрированы, будут загружены ваши файлы app/start. Последним будет загружен ваш файл app/routes.php. Когда файл routes.php загружен, объект запроса отправляется в приложение, и может быть отправлен в маршрут.

Давайте подытожим:
1. Запрос заходит в файл public/index.php.
2. Файл bootstrap/start.php создаёт приложение и определяет окружение.
3. Внутренний файл framework/start.php устанавливает настройки и загружает поставщиков услуг.
4. Загружаются файлы приложения app/start.
5. Загружаются файлы приложения app/routes.php.
6. Объект запроса посылается в приложение, которое возвращает объект отклика.
7. Объект отклика посылается обратно клиенту.

Теперь, когда вы хорошо представляете, как обрабатывается запрос в приложении Laravel, давайте поближе рассмотрим старт-файлы!

Старт-файлы

Файлы запуска, или старт-файлы вашего приложения хранятся в папке app/start. По умолчанию создано три таких файла: global.php, local.php и artisan.php. Для информации об artisan.php см. соответствующий раздел.

Файл global.php изначально содержит несколько начальных вызовов, таких как регистрация журнала и подключение app/filters.php. Однако вы можете добавить сюда всё, что вам нужно. Этот файл автоматически выполняется при каждом запросе вне зависимости от среды, в которой выполняется ваше приложение.

Файл local.php вызывается только, когда приложение работает в среде local. Больше информации о средах можно найти в разделе о настройках.

Конечно, если у вас определены другие среды, кроме local, вы можете создать старт-файлы для любой из них. Они будут автоматически загружаться, когда приложение работает в соответствующей среде. Например, если в вашем файле bootstrap/start.php определена среда development, то вы можете создать файл app/start/development.php, который будет подключаться при поступлении в приложение любого запроса в этой среде.

Что помещать в старт-файлы

Старт-файлы служат в качестве простого места для размещения любого кода «автозагрузки». Например, вы можете зарегистрировать построитель представлений, настроить ведение логов, установить некоторые параметры PHP и т.д. Это полностью зависит от вас. Конечно, перемещение всего вашего кода автозагрузки в старт-файлы может привести к загромождению. Для больших приложений, или если вы чувствуете, что ваши старт-файлы загромождаются, задумайтесь о переносе некоторого кода автозагрузки в поставщики услуг.

События

Регистрация обработчиков событий

Вы также можете делать пред- или пост-обработку запросов регистрируя обработчики для событий before, after, finish и shutdown:

PHP
App::before(function($request)
{
  
//
});

App::after(function ($request$response) {
  
//
});

Эти обработчики будут запущены соответственно до и после каждого вызова в вашем приложении. Эти события полезны для глобальной фильтрации и глобальной модификации откликов. Вы можете зарегистрировать их в одном из ваших старт-файлов или в поставщике услуг.

+ 4.1

добавлено в 4.1 ()

Вы также можете зарегистрировать обработчик для события matched, которое срабатывает, когда входящий запрос соответствует ещё не выполненному маршруту:

PHP
Route::matched(function($route$request)
{
  
//
});

Событие finish вызывается после отправки отклика от вашего приложения обратно клиенту. Это хороший момент, чтобы сделать какие-либо окончательные действия, требуемые для вашего приложения. Событие shutdown вызывается сразу после того, как все обработчики события finish завершат работу, и это последняя возможность сделать какую-то работу, прежде чем сценарий завершится. Скорее всего, у вас не будет необходимости использовать эти события.

Написать комментарий

Разметка: ? ?

Авторизуйся, чтобы прокомментировать.