Дисциплины - Объектно-ориентированное программирование

ООП в PHP - Фрэймворк Laravel - Жизненный цикл запроса и структура кода

Серверный конфигурационный файл (Apache или Ngingx) должен перенаправить запрос в папку /public.

Соответственно, точка входа для всех запросов фрэймворка начинается с файла public/index.php. Данный файл не содержит много кода. Основная его задача – загрузка необходимых файлов: autoload.php и bootstrap/app.php. А также дальнейшее перенаправление запроса.

Далее входящий запрос, в зависимости от типа, отправляется либо в модуль, обрабатывающий консольные команды (консольное ядро), либо в ядро фрэймворка, обрабатывающее http-запросы.

Сосредоточимся на ядре HTTP, который находится по адресу app/Http/Kernel.php. Данный файл является расширением класса Illuminate\Foundation\Http\Kernel (ядра фрэймворка). Ядро фрэймворка можно представить в виде большого черного ящика, который обрабатывает запросы, а также определяет перечень промежуточного программного обеспечения (специальных классов наследуемых от класса middleware), которые должен пройти фрэймворк прежде чем выдаст ответ.

Далее загружаются поставшики услуг для приложения (servise providers). Все поставщики услуг по применению настроены в массиве провайдеров конфигурационного файла config/app.php. Далее метод register() определяет необхоимые классы поставщиков услуг. Если некоторые поставщики услуг необходимо запустить сразу, то это можно выполнить в методе boot().

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

И только после того, как все поставщики услуг были зарегистированы (или сразу выполнены методом boot()), запрос попадает в маршрутизатор. Маршрутизатор, как правило, отправляет запрос в какой-либо из контроллеров.

На этом запрос обработан, и в контроллере должен быть прописан ответ фрэймворка. Кстати, если ответ ожидается коротким, то можно обойтись без контроллера: ответы фрэймворка можно писать сразу в маршрутизаторе.

Есть много отклонений и различных вариантов путей запроса, но неизменно путь проходит три опорные точки, на которые надо обратить внимание:

1. Роуты - app/routes.php

2. Контроллеры - app/controllers/

3. Промежуточное программное обеспечение, или middleware - app/middleware

4. Провайдеры - app/providers/

5. Отображения (виды) - app/views/

Фрэймворк Laravel предоставляет структуру файлов и папок в соответствии с архитектурным шаблоном проектирования HMVC. Рассмотрим ключевые дирректории фрэймворка.

app/

Все рабочие файлы, за исключением файлов ресурсов, живут в папке app/.

Главная рабочая папка всего фрэймворка. По умолчанию, это папка в пространстве имен App. Пространство имен можно изменить, используя artisan команду app:name.

php artisan app:name SocialNet

Дирректория app/ содержит следующие папки: Console/, Exceptions/, Handlers/, Http/ и Providers/, а также файлы моделей.

Каталог Console содержит классы консольных команд.

Каталог Exceptions содержит классы обработчики исключений.

Каталог Http содержит все фильтры, контроллеры, а также классы валидации request-запросов.

Каталог Providers предназначен для вспомогательных классов.

bootstrap/

Папка для конфигурационных файлов автозагрузки.

config/

Папка конфигурационных файлов.

database/

В папке database находятся папка migrations (для файлов миграций баз данных), seeds (для классов предворительной загрузки данных) и factories (фабрики).

public/

Корневая папка проекта. В этой папке находится файл index.php и .htaccess, которые загружаются первыми, а также папкимедиафайлов (css, js, изображения и др.)

resources/

Рабочая дирректория для ресурсов приложения, содержит следующие папки: assets/, lang/ и views/.

Каталог views/ предназначен для html-шаблонов (элементов представлений).

Каталог assets/ предназначен для файлов предпроцессорных клиентских языков программирования, таких как CoffeScript, Less, Sass и других.

Каталог lang/ предназначен для файлов переводов.

routes/

Папка для маршрутов приложения. Основные маршруты описываются в файле web.php.

storage/

Папка для хранения временных файлов, создаваемых фрэймворком.

Папки внутри storage должны быть доступны веб-серверу для записи. Если вы устанавливаете фреймворк на Linux или MacOS, необходимо открыть доступ к этой папке.

tests/

Папка содержит файлы автоматических тестов.

vendor/

Папка содержит composer – зависимости. По сути, папка vendor/ - это единственная неприкосновенная папка фрэймворка, т.к. здесь находятся внешние зависимости проекта.

Корневые файлы проекта

webpack.mix.js - файл настроек сборщика модулей webpack.

server.php - стартовый файл проекта (вместо index.php). Однако этим файлом мы не пользуемся, т.к. перенаправили все запросы в /public

package.json - файл настроек менеджера зависимостей npm (для node.js).

phpunit.xml - конфигурационный xml-файл для PHPUnit.

composer.json - файл настроек менеджера зависимостей composer (для PHP).

composer.lock - вспомогательный файл для composer.

artisan - интерфейс командной строки для создания компонентов приложения (таких как controllers, models, providers, middleware, listeners и других) и управления приложением.

readme.md - файл для описания проекта на github.com.

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться
814301 БГУИР
814302 БГУИР
814303 БГУИР
894351 БГУИР
90421 БГУИР


Изображения Видео

1. Абстрактная фабрика https://www.youtube.com/watch?v=1mVONOCxfLg
2. Фабричный метод https://www.youtube.com/watch?v=5UqUDR6_2cY
3. Шаблон декоратор https://www.youtube.com/watch?v=Lwb9bm8yKD0
4. Dessign patterns on PHP https://github.com/domnikl/DesignPatternsPHP
5. Приёмы объектно-ориентированного проектирования. Паттерны проектирования Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссидес; [пер. с англ.: А. Слинкин науч. ред.: Н. Шалаев]. — Санкт-Петербург [и др.] : Питер, 2014. — 366 с. : ил. ; 24 см.
6. Приемы объектно-ориентированного проектирования. Паттерны проектирования Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссидес; [пер. с англ.: А. Слинкин науч. ред.: Н. Шалаев]. — Санкт-Петербург [и др.] : Питер, 2014. — 366 с. : ил. ; 24 см.
7. Ajax http://erud.by/ajax
8. Ajax http://erud.by/ajax
9. Ajax http://erud.by/ajax
10. Документация Laravel http://laravel.com
Задание к курсовой работе
Задание к курсовой работе
Вопросы к экзамену