Вхідні скрипти
==============
Вхідні скрипти це перша ланка в процесі початкового завантаження додатку. Додаток (веб-додаток або консольний додаток)
має єдиний вхідний скрипт. Кінцеві користувачі роблять запити до вхідного скрипта, який створює об’єкти додатка та
перенаправляє запит до них.
Вхідні скрипти для веб-додатків повинні бути збережені в директоріях, доступних із веб, таким чином, вони можуть бути
доступними кінцевим користувачам. Зазвичай вони називаються `index.php`, але також можут використовуватись і інші
імена, які можуть бути розпізнані веб-серверами.
Вхідні скрипти для консольних додатків зазвичай розміщенні у [кореневій директорії](structure-applications.md)
додатку і мають назву `yii` (з суфіксом `.php`). Вони повинні мати права на виконання, щоб користувачі мали змогу
запускати консольні додатки через команду `./yii <маршрут> [аргументи] [опції]`.
Вхідні скрипти в основному виконують наступну роботу:
* Оголошують глобальні константи;
* Реєструють автозавантажувач класів [Composer](https://getcomposer.org/doc/01-basic-usage.md#autoloading);
* Підключають файл класу [[Yii]];
* Завантажують конфігурацію додатка;
* Створюють і конфігурують об’єкт [додатка](structure-applications.md);
* Викликають метод [[yii\base\Application::run()]] додатка для обробки вхідного запиту.
## Веб-додатки
Нижче наведений код вхідного скрипта для [базового шаблону додатка](start-installation.md).
```php
run();
```
## Консольні додатки
Нижче наведений аналогічний код вхідного скрипта консольного додатка:
```php
#!/usr/bin/env php
run();
exit($exitCode);
```
## Оголошення констант
Вхідні скрипти є найкращим місцем для оголошення глобальних констант. Yii підтримує наступні три константи:
* `YII_DEBUG`: вказує чи працює додаткок у режимі відлагодження ("debug mode"), перебуваючи у якому,
додаток буде збирати більше інформації у логи та покаже більш детальний стек викликів при отриманні виключення.
З цієї причини, режим відлагодження повинен бути використаний тільки в процесі розробки.
За замовчуванням значення `YII_DEBUG` дорівнює `false`.
* `YII_ENV`: вказує в якому середовищі працює додаток. Дана тема детально розглянута у розділі
[Конфігурації](concept-configurations.md#environment-constants). За замовчуванням значення `YII_ENV` дорівнює
`'prod'`, яке означає, що додаток працює у робочому ("production") режимі.
* `YII_ENABLE_ERROR_HANDLER`: вказує чи потрібно увімкнути наявний у Yii обробник помилок.
За замовчуванням значення даної константи дорівнює `true`.
При визначенні константи, ми зазвичай використовуєм наступний код:
```php
defined('YII_DEBUG') or define('YII_DEBUG', true);
```
який рівнозначний коду, наведеному нижче:
```php
if (!defined('YII_DEBUG')) {
define('YII_DEBUG', true);
}
```
Перший варіант є більш коротким і зрозумілим.
Константи мають бути визначені якомога раніше, на самому початку вхідного скрипта, щоб вони могли вплинути на решту
PHP файлів, які будуть підключатись.