6.2 KiB
Порядок выполнения
Каждое приложение выполняется в следующем порядке:
- Старт приложения из
index.php
- Установка путей для application, module, и system.
- Установка уровня Error reporting.
- Загружается файл установки, если таковой имеется.
- Загружается класс [Kohana].
- Подключение
APPPATH/bootstrap.php
- Вызывается [Kohana::init], который устанавливает обработку ошибок, кэширование и логирование.
- Подгружаются [Kohana_Config] и [Kohana_Log].
- Вызывается [Kohana::modules] для активации дополнительных модулей.
- Информация о пути к модулям добавляется в каскадную файловую систему.
- Если находится, подгружается файл
init.php
модуля. - Файл
init.php
производит дополнительную настройку окружения, включая добавление маршрутов.
- Несколько раз вызывается [Route::set], чтобы определить все маршруты приложения.
- Вызывается [Request::instance], чтобы начать обработку выполнения.
- Проверяет все маршруты, пока не найдёт совпадения с вызываемым.
- Создаёт инстанс контроллера и передаёт ему запрос.
- Вызывает метод [Controller::before].
- Вызывает действие контроллера, которое генерирует ответа на запрос.
- Вызывает метод [Controller::after].
- Предыдущие 5 шагов могут быть вызваны несколько раз при использовании HMVC подзапросов.
- Отображается результат ответа на запрос ([Request]).
index.php
Kohana использует в работе паттерн [front controller], что означает, что все запросы направляются на index.php
. Это позволяет использовать понятный и прозрачный дизайн файловой системы. index.php
содержит лишь основные возможные конфигурационные свойства. Вы лишь можете изменить $application
, $modules
, и $system
пути и выставить уровень оповещения об ошибках.
Переменная $application
позволяет определить директорию, которая содержит файлы Вашего приложения. По-умолчанию - это application
. Переменная $modules
, соответственно, указывает на директорию с файлами модулей, а $system
- директорию с файлами ядра Kohana.
Вы можете переместить эти директории куда угодно. Например, если Вы имеете такую структуру каталогов:
www/
index.php
application/
modules/
system/
То можете переместить директории на уровень выше корня web папки:
application/
modules/
system/
www/
index.php
После этого нужно привести установки в index.php
к следующему виду:
$application = '../application';
$modules = '../modules';
$system = '../system';
Теперь ни один из каталогов не может быть напрямую доступен для web сервера. Совсем не обязательно производить эти изменения, но, помимо прочего, это может быть полезно при использовании одного набора директорий среди множества приложений.
[!!] В начале всех файлов Kohana присутствует проверка безопасности, дабы предотвратить доступ до файла без использования front контроллера. Однако, более безопасно разместить application, modules, и system директории таким образом, чтобы они были недоступны извне.
Сообщения об ошибках
По-умолчанию, Kohana отображает все ошибки, включая strict mode предупреждения. Это устанавливается, используя error_reporting:
error_reporting(E_ALL | E_STRICT);
Когда Ваше приложение опубликовывается в продуктив, то рекомендуется использовать более консервативные настройки, такие как игнорирование уведомлений:
error_reporting(E_ALL & ~E_NOTICE);
Если Вы получаете белый экран при ошибке, то это означает, что Ваш сервер имеет отключённое свойство отображение ошибок. Вы можете включить его, добавив эти строчки сразу после вызова error_reporting
:
ini_set('display_errors', TRUE);
Ошибки должны всегда отображаться, даже в продуктиве, так как это позволяет использовать исключения и обработку ошибок, чтобы выдавать симпатичную страничку с ошибкой, нежели дезориентирующий белый экран.