forked from samdark/yiiframework_ru_cookbook
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinstall.many.configs.txt
81 lines (66 loc) · 4.25 KB
/
install.many.configs.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
Используем несколько конфигураций в одном приложении
====================================================
В некоторых случаях полезно использовать разные конфигурационные файлы.
Например, может потребоваться применять различные конфигурации при работе в
обычном режиме, в режиме разработки и режиме тестирования. В крупных командах
разработчики часто работают со своим собственным слепком базы данных, параметрами
и конфигурацией.
Автоматический выбор конфигурации
---------------------------------
При создании приложения единственным параметром, который мы можем
передать в `Yii::createWebApplication`, является путь к файлу конфигурации,
согласно которому оно будет работать. Этим можно воспользоваться:
`index.php`:
~~~
[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`). В результате, мы можем разместить
в нём код, который позволит нам наследовать конфигурацию.
Итак, нам необходимо завести три файла:
1. `main.php` с конфигурацией приложения по умолчанию.
2. `dev.php`, который будет содержать конфигурацию для
разработчика. К примеру, в этой конфигурации мы можем использовать другую
базу данных, выводить отладочную информацию на экран и многое другое.
3. `production.php`, содержащий настройки, специфичные для работы на сервере.
Покажем наследование на примере `dev.php`. Для этого используем [CMap::mergeArray].
`dev.php`:
~~~
[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/](http://www.yiiframework.com/doc/cookbook/32/) в переводе [Ozzy](http://yiiframework.ru/forum/memberlist.php?mode=viewprofile&u=54), [dbhelp.ru](http://dbhelp.ru/).
- `Переработан`: Александром Макаровым, Sam Dark ([rmcreative.ru](http://rmcreative.ru/))