structure-entry-scripts.md 6.31 KB
Newer Older
1
Вхідні скрипти
2
==============
3 4

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

8 9 10
Вхідні скрипти для веб додатків повинні бути збережені в директоріях, доступних із веб, таким чином, вони можуть бути
доступними кінцевим користувачам. Зазвичай вони називаються `index.php`, але також можут використовуватись і інші
імена, які можуть бути розпізнані веб-серверами.
11

12 13 14
Вхідні скрипти для консольних додатків зазвичай розміщенні у [кореневій директорії](structure-applications.md)
додатку і мають назву `yii` (з суфіксом `.php`). Вони повинні мати права на виконання, щоб користувачі мали змогу
запускати консольні додатки через команду `./yii <маршрут> [аргументи] [опції]`.
15 16 17 18

Вхідні скрипти в основному виконують наступну роботу:

* Оголошують глобальні константи;
19 20
* Реєструють автозавантажувач класів [Composer](http://getcomposer.org/doc/01-basic-usage.md#autoloading);
* Підключають файл класу [[Yii]];
21 22
* Завантажують конфігурацію додатка;
* Створюють і конфігурують об’єкт [додатка](structure-applications.md);
23
* Викликають метод [[yii\base\Application::run()]] додатка для обробки вхідного запиту.
24 25 26 27 28 29 30 31 32 33 34 35


## Веб додатки <a name="web-applications"></a>

Нижче наведений код вхідного скрипта для [базового шаблону додатка](start-installation.md).

```php
<?php

defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');

36
// реєстрація автозавантажувача класів Composer
37 38
require(__DIR__ . '/../vendor/autoload.php');

39
// підключення файла класу Yii
40 41 42 43 44
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');

// завантаження конфігурації додатка
$config = require(__DIR__ . '/../config/web.php');

45
// створення, конфігурація та виконання додатка
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
(new yii\web\Application($config))->run();
```


## Консольні додатки <a name="console-applications"></a>

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

```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);

67
// fcgi не має констант STDIN та STDOUT за замовчуванням
68 69 70
defined('STDIN') or define('STDIN', fopen('php://stdin', 'r'));
defined('STDOUT') or define('STDOUT', fopen('php://stdout', 'w'));

71
// реєстрація автозавантажувача класів Composer
72 73
require(__DIR__ . '/vendor/autoload.php');

74
// підключення файла класу Yii
75 76 77 78 79 80 81 82 83 84 85 86 87
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');

// завантаження конфігурації додатка
$config = require(__DIR__ . '/config/console.php');

$application = new yii\console\Application($config);
$exitCode = $application->run();
exit($exitCode);
```


## Оголошення констант <a name="defining-constants"></a>

RichWeber committed
88
Вхідні скрипти є найкращим місцем для оголошення глобальних констант. Yii підтримує наступні три константи:
89

90 91 92 93 94 95 96 97 98
* `YII_DEBUG`: вказує чи працює додаткок у режимі відлагодження ("debug mode"), перебуваючи у якому,
  додаток буде збирати більше інформації у логи та покаже більш детальний стек викликів при отриманні виключення.
  З цієї причини, режим відлагодження повинен бути використаний тільки в процесі розробки. 
  За замовчуванням значення `YII_DEBUG` дорівнює `false`.
* `YII_ENV`: вказує в якому середовищі працює додаток. Дана тема детально розглянута у розділі 
  [Конфігурації](concept-configurations.md#environment-constants). За замовчуванням значення `YII_ENV` дорівнює
  `'prod'`, яке означає, що додаток працює у робочому ("production") режимі.
* `YII_ENABLE_ERROR_HANDLER`: вказує чи потрібно увімкнути наявний у Yii обробник помилок.
  За замовчуванням значення даної константи дорівнює `true`.
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115

При визначенні константи, ми зазвичай використовуєм наступний код:

```php
defined('YII_DEBUG') or define('YII_DEBUG', true);
```

який рівнозначний коду, наведеному нижче:

```php
if (!defined('YII_DEBUG')) {
    define('YII_DEBUG', true);
}
```

Перший варіант є більш коротким і зрозумілим.

116 117
Константи мають бути визначені якомога раніше, на самому початку вхідного скрипта, щоб вони могли вплинути на решту
PHP файлів, які будуть підключатись.