|
|
|
Вхідні скрипти
|
|
|
|
==============
|
|
|
|
|
|
|
|
Вхідні скрипти це перша ланка в процесі початкового завантаження додатку. Додаток (веб додаток або консольний додаток)
|
|
|
|
має єдиний вхідний скрипт. Кінцеві користувачі роблять запити до вхідного скрипта, який створює об’єкти додатка та
|
|
|
|
перенаправляє запит до них.
|
|
|
|
|
|
|
|
Вхідні скрипти для веб додатків повинні бути збережені в директоріях, доступних із веб, таким чином, вони можуть бути
|
|
|
|
доступними кінцевим користувачам. Зазвичай вони називаються `index.php`, але також можут використовуватись і інші
|
|
|
|
імена, які можуть бути розпізнані веб-серверами.
|
|
|
|
|
|
|
|
Вхідні скрипти для консольних додатків зазвичай розміщенні у [кореневій директорії](structure-applications.md)
|
|
|
|
додатку і мають назву `yii` (з суфіксом `.php`). Вони повинні мати права на виконання, щоб користувачі мали змогу
|
|
|
|
запускати консольні додатки через команду `./yii <маршрут> [аргументи] [опції]`.
|
|
|
|
|
|
|
|
Вхідні скрипти в основному виконують наступну роботу:
|
|
|
|
|
|
|
|
* Оголошують глобальні константи;
|
|
|
|
* Реєструють автозавантажувач класів [Composer](http://getcomposer.org/doc/01-basic-usage.md#autoloading);
|
|
|
|
* Підключають файл класу [[Yii]];
|
|
|
|
* Завантажують конфігурацію додатка;
|
|
|
|
* Створюють і конфігурують об’єкт [додатка](structure-applications.md);
|
|
|
|
* Викликають метод [[yii\base\Application::run()]] додатка для обробки вхідного запиту.
|
|
|
|
|
|
|
|
|
|
|
|
## Веб додатки <span id="web-applications"></span>
|
|
|
|
|
|
|
|
Нижче наведений код вхідного скрипта для [базового шаблону додатка](start-installation.md).
|
|
|
|
|
|
|
|
```php
|
|
|
|
<?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();
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Консольні додатки <span id="console-applications"></span>
|
|
|
|
|
|
|
|
Нижче наведений аналогічний код вхідного скрипта консольного додатка:
|
|
|
|
|
|
|
|
```php
|
|
|
|
#!/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);
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Оголошення констант <span id="defining-constants"></span>
|
|
|
|
|
|
|
|
Вхідні скрипти є найкращим місцем для оголошення глобальних констант. 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 файлів, які будуть підключатись.
|