6.3 KiB
Вхідні скрипти
Вхідні скрипти це перша ланка в процесі початкового завантаження додатку. Додаток (веб-додаток або консольний додаток) має єдиний вхідний скрипт. Кінцеві користувачі роблять запити до вхідного скрипта, який створює об’єкти додатка та перенаправляє запит до них.
Вхідні скрипти для веб-додатків повинні бути збережені в директоріях, доступних із веб, таким чином, вони можуть бути
доступними кінцевим користувачам. Зазвичай вони називаються index.php, але також можут використовуватись і інші
імена, які можуть бути розпізнані веб-серверами.
Вхідні скрипти для консольних додатків зазвичай розміщенні у кореневій директорії
додатку і мають назву yii (з суфіксом .php). Вони повинні мати права на виконання, щоб користувачі мали змогу
запускати консольні додатки через команду ./yii <маршрут> [аргументи] [опції].
Вхідні скрипти в основному виконують наступну роботу:
- Оголошують глобальні константи;
- Реєструють автозавантажувач класів Composer;
- Підключають файл класу Yii;
- Завантажують конфігурацію додатка;
- Створюють і конфігурують об’єкт додатка;
- Викликають метод yii\base\Application::run() додатка для обробки вхідного запиту.
Веб-додатки
Нижче наведений код вхідного скрипта для базового шаблону додатка.
<?php
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
// реєстрація автозавантажувача класів Composer
require(__DIR__ . '/../vendor/autoload.php');
// підключення файла класу Yii
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
// завантаження конфігурації додатка
$config = require(__DIR__ . '/../config/web.php');
// створення, конфігурація та виконання додатка
(new yii\web\Application($config))->run();
Консольні додатки
Нижче наведений аналогічний код вхідного скрипта консольного додатка:
#!/usr/bin/env php
<?php
/**
* Yii console bootstrap file.
*
* @link http://www.yiiframework.com/
* @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/
defined('YII_DEBUG') or define('YII_DEBUG', true);
// fcgi не має констант STDIN та STDOUT за замовчуванням
defined('STDIN') or define('STDIN', fopen('php://stdin', 'r'));
defined('STDOUT') or define('STDOUT', fopen('php://stdout', 'w'));
// реєстрація автозавантажувача класів Composer
require(__DIR__ . '/vendor/autoload.php');
// підключення файла класу Yii
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
// завантаження конфігурації додатка
$config = require(__DIR__ . '/config/console.php');
$application = new yii\console\Application($config);
$exitCode = $application->run();
exit($exitCode);
Оголошення констант
Вхідні скрипти є найкращим місцем для оголошення глобальних констант. Yii підтримує наступні три константи:
YII_DEBUG: вказує чи працює додаткок у режимі відлагодження ("debug mode"), перебуваючи у якому, додаток буде збирати більше інформації у логи та покаже більш детальний стек викликів при отриманні виключення. З цієї причини, режим відлагодження повинен бути використаний тільки в процесі розробки. За замовчуванням значенняYII_DEBUGдорівнюєfalse.YII_ENV: вказує в якому середовищі працює додаток. Дана тема детально розглянута у розділі Конфігурації. За замовчуванням значенняYII_ENVдорівнює'prod', яке означає, що додаток працює у робочому ("production") режимі.YII_ENABLE_ERROR_HANDLER: вказує чи потрібно увімкнути наявний у Yii обробник помилок. За замовчуванням значення даної константи дорівнюєtrue.
При визначенні константи, ми зазвичай використовуєм наступний код:
defined('YII_DEBUG') or define('YII_DEBUG', true);
який рівнозначний коду, наведеному нижче:
if (!defined('YII_DEBUG')) {
define('YII_DEBUG', true);
}
Перший варіант є більш коротким і зрозумілим.
Константи мають бути визначені якомога раніше, на самому початку вхідного скрипта, щоб вони могли вплинути на решту PHP файлів, які будуть підключатись.