3.4 Процесс запуска приложения
- 3.4.1 Обзор
- 3.4.2 Порядок выполнения кода
- 3.4.3 Маршрутизация запросов (Routing)
3.4.1 Обзор
Для разработки и отладки своих приложений необходимо четкое понимание того, как происходит обработка входящих запросов, как работает фреймворк, в какой последовательности выполняется код внутри приложения.
3.4.2 Порядок выполнения кода
- Точкой входа для приложения является index.php, который располагается в корне web-директории приложения (папке /www). В этом файле подключается основной файл конфигурации приложения config.php, базовые классы приложения (в system/index.php), основной класс приложения application.php. В классе application могут быть переопределен процесс запуска приложения, если это необходимо (бывает редко), также в нем можно скомпоновать toolkit и подгрузить какие-то свои базовые классы.
- Далее приложение стартует путем вызова $application->run().
- В процессе запуска происходит компановка резолвера (метод composeResolvers) (todo: ссылка на описание резолвера), загрузка необходимых для старта файлов (метод loadCommonFiles), сборка композитного тулкита (метод composeToolkit), проверка приложения и его компонентов (метод check), затем управление переходит на метод handle.
-
В методе handle происходит сборка цепи фильтров (метод composeFilters),
которые должны обработать входящий запрос. Обычный набор фильтров состоит из следующей последовательности:
- timingFilter — фильтр для подсчета времени выполнения запроса
- sessionFilter — фильтр предназначен для подготовки и старта сессии
- routingFilter — фильтр, в котором происходит процесс роутинга запроса
- userFilter — фильтр определяет и устанавливает текущего пользователя, который выполняет запрос
- userPreferencesFilter — фильтр устанавливает текущие настройки пользователя для приложения (локаль, часовой пояс, скин...)
- contentFilter — фильтр получения и отображения контента