所有应用程序实例所需的main.php
中的一些详细信息(URL详细信息)和一些详细信息将特定于每个应用程序实例(数据库详细信息)。
是否有任何想法将数据库详细信息与protected/config/main.php
分开?
答案 0 :(得分:3)
只需包含其他PHP文件的共享配置:
main.php:
return array
(
....
'components' => array
(
'db' => include('sharedDatabaseConfiguration.php');
)
);
sharedDatabaseConfiguration.php:
return array('host' => ...);
您可能需要添加路径或其他内容,具体取决于文件的存储位置。
编辑:顺便说一下,Yii也有一个花哨的CMap :: mergeArray()函数可以做类似的事情(如果你想用另一个配置文件“扩充”单个配置文件的内容。请查看默认值生成的console.php就是一个例子。
答案 1 :(得分:2)
你可以在这里找到一个想法:Manage application configuration in different modes 。
基本上它通过导入不同的PHP文件(您的数据库配置)并合并包含的array
来工作:
<?php
return CMap::mergeArray(
require(dirname(__FILE__).'/db-config.php'),
array(
'basePath' => dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
'name' => 'Page Title',
...
)
);
?>
答案 2 :(得分:2)
您可以使用单独的配置文件(例如protected / config / production.php),该文件基于您的主配置文件,并使用CMap::mergeArray
覆盖某些设置,因为this answer建议:
return CMap::mergeArray(
require(dirname(__FILE__) . '/main.php'),
array(
'components' => array(
'db' => array(
'connectionString' => '...',
'username' => '...',
'password' => '...',
),
),
)
);
然后你可以将protected / config / production.php添加到.gitignore。