В некоторых случаях полезно использовать разные конфигурационные файлы.
Например, может потребоваться применять различные конфигурации при работе в
обычном режиме, в режиме разработки и режиме тестирования. В крупных командах
разработчики часто работают со своим собственным слепком базы данных, параметрами
и конфигурацией.
При создании приложения единственным параметром, который мы можем
передать в Yii::createWebApplication
, является путь к файлу конфигурации,
согласно которому оно будет работать. Этим можно воспользоваться:
index.php
:
$webRoot=dirname(__FILE__);
// Если хост равен localhost, то включаем режим отладки и подключаем отладочную
// конфигурацию
if($_SERVER['HTTP_HOST']=='localhost'){
define('YII_DEBUG', true);
require_once(dirname($webRoot).'/framework/yii.php');
$configFile=$webRoot.'/../app/config/dev.php';
}
// Иначе выключаем режим отладки и подключаем рабочую конфигурацию
else {
define('YII_DEBUG', false);
require_once(dirname($webRoot).'/framework/yiilite.php');
$configFile=$webRoot.'/../app/config/production.php';
}
$app = Yii::createWebApplication($configFile)->run();
Подобным образом можно подключать файлы конфигурации в зависмости, например,
от IP-адреса или наличия определённого cookie.
Почти полностью дублировать конфигурацию в файле разработчика и рабочем файле
неудобно. К счастью, конфигурация приложения в Yii хранится
в виде PHP файла (protected/config/main.php
). В результате, мы можем разместить
в нём код, который позволит нам наследовать конфигурацию.
Итак, нам необходимо завести три файла:
main.php
с конфигурацией приложения по умолчанию.dev.php
, который будет содержать конфигурацию дляproduction.php
, содержащий настройки, специфичные для работы на сервере.Покажем наследование на примере dev.php
. Для этого используем CMap::mergeArray().
dev.php
:
return CMap::mergeArray(
// наследуемся от main.php
require(dirname(__FILE__).'/main.php'),
array(
'components'=>array(
// переопределяем компонент db
'db'=>array(
// настройки для конфигурации разработчика
),
),
)
);
Аналогичным образом поступим с production.php
.
Основан на
: http://www.yiiframework.com/doc/cookbook/32/ в переводе Ozzy, dbhelp.ru. Переработан
: Александром Макаровым, Sam Dark (rmcreative.ru)