Перейти до вмісту

Вхідні скрипти

Вхідні скрипти це перша ланка в процесі початкового завантаження додатку. Додаток (веб-додаток або консольний додаток) має єдиний вхідний скрипт. Кінцеві користувачі роблять запити до вхідного скрипту, який створює екземпляри додатка та перенаправляє запит до них.

Вхідні скрипти для веб-додатків повинні бути збережені в директоріях, доступних через веб, таким чином, вони можуть бути доступними кінцевим користувачам. Зазвичай вони називаються 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
// завантаження конфігурації додатка
$config = require __DIR__ . '/../config/web.php';
// створення, конфігурація та виконання додатка
(new yii\web\Application($config))->run();

Нижче наведений аналогічний код вхідного скрипту консольного додатка:

#!/usr/bin/env php
<?php
/**
* Yii console bootstrap file.
*
* @link https://www.yiiframework.com/
* @copyright Copyright (c) 2008 Yii Software LLC
* @license https://www.yiiframework.com/license/
*/
defined('YII_DEBUG') or define('YII_DEBUG', true);
// реєстрація автозавантажувача класів Composer
require __DIR__ . '/vendor/autoload.php';
// підключення файлу класу Yii
// завантаження конфігурації додатка
$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-файлів, які будуть підключатись.