MZZ.Framework 1.0
Разделы

3.4 Процесс запуска приложения

3.4.1 Обзор
3.4.2 Порядок выполнения кода
3.4.3 Маршрутизация запросов (Routing)

3.4.1 Обзор

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

3.4.2 Порядок выполнения кода

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

3.4.3 Маршрутизация запросов (Routing)