git忽略Yii数据库的详细信息

时间:2014-02-21 10:42:35

标签: yii configuration

所有应用程序实例所需的main.php中的一些详细信息(URL详细信息)和一些详细信息将特定于每个应用程序实例(数据库详细信息)。

是否有任何想法将数据库详细信息与protected/config/main.php分开?

3 个答案:

答案 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。