Несколько конфигураций в YII 1.x.x
Доброго времени суток. В данной статье я расскажу как в фреймворке yii использовать несколько конфигураций. Как мы знаем конфигурации приложения использующего yii находятся в папке protected/config. А основная конфигурация находится в файле main.php.
Основной файл, который запускается при инициализации приложения index.php, который находится в корне Вашего проекта и имеет следующий вид:
//change the following paths if necessary $yii=dirname(__FILE__).'/core/yii.php'; $config=dirname(__FILE__).'/protected/config/main.php'; // remove the following lines when in production mode defined('YII_DEBUG') or define('YII_DEBUG',true); // specify how many levels of call stack should be shown in each log message defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3); require_once($yii); Yii::createWebApplication($config)->run();
где:
- В переменную $yii мы помещаем путь к ядру нашего фреймворка
- В переменную $config мы помещаем путь к основному файлу конфигурации
- Далее задаем константу YII_DEBUG и присваиваем ей значение true. Это необходимо для того, чтобы во время отладки нам показывалось больше информации об ошибке.
- Задаем константу YII_TRACE_LEVEL, которая определяет количество слоев каждого стека вызова, которое должно быть записано.
Как видим константы YII_DEBUG и YII_TRACE_LEVEL необходимы только во время разработки. А также и некоторая конфигурация в самом файле конфига main.php нам необходима только в режиме development. Например, модуль gii. Поэтому давайте нашу конфигурацию разобьем на несколько файлов: одна для режима разработки, а вторая для продакшен режима. Для этого в папке protected скопируем файл main.php с названием dev.php. В файле main.php будет находится конфигурация для продакшен режима, а в файле dev.php – для режима разработки.
Теперь немного изменим файл index.php, который находится в корне нашего проекта.
// change the following paths if necessary $yii=dirname(__FILE__).'/core/yii.php'; define('DEV', true); if (DEV) { $config=dirname(__FILE__).'/protected/config/dev.php'; // remove the following lines when in production mode defined('YII_DEBUG') or define('YII_DEBUG',true); // specify how many levels of call stack should be shown in each log message defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3); } else { $config=dirname(__FILE__).'/protected/config/main.php'; } require_once($yii); Yii::createWebApplication($config)->run();
Что мы сделали?
Ввели новую константу DEV, которой присваиваем значение false или true. Если DEV равна true, то мы включаем режим разработки и тогда в качестве основного файла конфигурации будет использоваться файл dev.php, а также будут определены константы YII_DEBUG и YII_TRACE_LEVEL. В противном случае будет включен режим продакшен, который использует в качестве основного файла конфигурации main.php. Таким образом мы с Вами сделали две конфигурации нашего приложения для development режима и для production режима.