{{TOC}} {{DOCVER 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51, 5.2=6b0b057ae6de3c88cb29188459e38383c622ec23 8.12.2016 23:00:15, 5.1=cdc24ba7426c5b11eb4d050706bd78c3ea4913cc 19.06.2016 20:08:01, 5.0=5d10040a981deee82c0fde0e8e5d2ffc49eaaecb 8.02.2016 18:09:11}} == Введение == При использовании любого инструмента в "реальном мире" вы чувствуете больше уверенности, когда понимаете, как он устроен. Разработка приложений - не исключение. Когда вы понимаете, как функционируют ваши средства разработки, вы чувствуете себя более комфортно и уверенно. Задача этого документа состоит в том, чтобы дать вам хороший поверхностный обзор того, как работает фреймворк Laravel. Чем лучше вы знаете фреймворк, тем меньше в нём остаётся "волшебства", и вы более уверенно создаёте приложения. Не отчаивайтесь, если не всё сразу поймёте! Постарайтесь просто получить базовое понимание того, что происходит, и ваши знания будут расти по мере изучения других разделов документации. == Прохождение запроса == === Начало === Входная точка для всех запросов к вашему приложению - файл %%(t)public/index.php%%. Все запросы направляются в этот файл настройками вашего веб-сервера (Apache / Nginx). Файл %%(t)index.php%% содержит довольно мало кода. Скорее, он просто отправная точка для загрузки всего остального фреймворка. Файл %%(t)index.php%% загружает сгенерированное с помощью Composer определение автозагрузчика, а затем извлекает экземпляр Laravel-приложения из скрипта %%(t)bootstrap/app.php%%. Первое действие самого Laravel - создание экземпляра приложения / ((/docs/v5/container сервис-контейнера)). === Ядра HTTP / Console === Далее входящий запрос посылается либо в HTTP-ядро, либо в ядро консоли, в зависимости от типа этого запроса. Эти ядра служат центральным местом, через которое протекают все запросы. Пока давайте рассмотрим HTTP-ядро, которое расположено в %%(t)app/Http/Kernel.php%%. HTTP-ядро наследует класс %%(t)Illuminate\Foundation\Http\Kernel%%, который определяет массив загрузчиков %%bootstrappers%%, которые будут запущены перед выполнением запроса. Эти загрузчики настраивают обработку ошибок, настраивают ведение журналов, ((/docs/v5/configuration#среда определяют среду приложения)) и выполняют другие задачи, которые надо выполнить перед самой обработкой запроса. HTTP-ядро также определяет список ((/docs/v5/middleware посредников)) HTTP, через которые должны пройти все запросы, прежде чем будут обработаны приложением. Эти посредники обрабатывают чтение и запись ((/docs/v5/session HTTP-сессии)), определяя, находится ли приложение в режиме обслуживания, ((/docs/v5/csrf проверяют CSRF-последовательность)), и т.п. Принцип действия метода %%handle%% HTTP-ядра очень прост: получить %%(t)Request%% и вернуть %%(t)Response%%. Представьте ядро как большую чёрную коробку, которая представляет собой всё ваше приложение. Наполняйте его HTTP-запросами и оно будет возвращать HTTP-ответы. === Поставщики услуг === Одно из важнейших действий ядра при загрузке - загрузка ((/docs/v5/providers **поставщиков услуг**)) для вашего приложения. Все поставщики услуг настраиваются в конфигурационном файле %%(t)config/app.php%% в массиве %%(t)providers%%. Сначала будет вызван метод %%register%% для всех поставщиков, а когда все они будут зарегистрированы, будет вызван метод %%boot%%. Поставщики услуг отвечают за начальную загрузку всевозможных компонентов фреймворка: БД, очередь, проверка ввода и маршрутизация. Поставщики услуг - важнейший элемент всего процесса начальной загрузки Laravel, так как они отвечают за загрузку и настройку всех возможностей, необходимых фреймворку. === Отправка запроса === Когда приложение загружено, и все поставщики услуг зарегистрированы, запрос %%(t)Request%% будет передан роутеру для отправки. Роутер отправит запрос по маршруту или контроллеру, а также запустит посредника, соответствующего маршруту. == Сконцентрируйтесь на поставщиках услуг == Поставщики услуг - поистине ключ к загрузке Laravel-приложения. Экземпляр приложения создан, поставщики услуг зарегистрированы, и запрос передан в загруженное приложение. Вот так просто! Очень важно иметь хорошее понимание того, как строится и загружается Laravel-приложение с помощью поставщиков услуг. Само собой поставщики услуг вашего приложения по умолчанию хранятся в %%(t)app/Providers%%. По умолчанию %%(t)AppServiceProvider%% довольно пуст. Этот поставщик является отличным местом для добавления в ваше приложение собственной автозагрузки и привязок сервис-контейнера. Для больших приложений вы можете создать несколько поставщиков услуг, которые будут содержать определённые части автозагрузки.