Yii2 framework backup
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

6.5 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: вказує чи працює додаткок у відлагоджувальному режимі. Перебуваючи у відлагоджувальному режимі, додаток буде збирати більше інформації у логи і покаже більш детальний стек викликів, якщо виникне виняток. По цій причині, відлагоджувальний режим повинен бути використаний тільки в процесі розробки. За замовчуванням значення YII_DEBUG дорівнює false;
  • YII_ENV: вказує в якому середовищі працює додаток. Дана тема детально розглянута в розділі Конфігурації. За замовчуванням значення YII_ENV дорівнює 'prod', що значить, що додаток працює у виробничому режимі;
  • YII_ENABLE_ERROR_HANDLER: вказує чи потрібно включати наявний у Yii обробник помилок. За замовчуванням значення даної константи дорівнює true.

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

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

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

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

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

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