2014-02-21 27 views
3

所有應用程序實例(URL詳細信息)和某些詳細信息所需的main.php中的一些詳細信息將特定於每個應用程序實例(數據庫詳細信息)。git忽略Yii數據庫詳細信息

是否有任何想法將數據庫細節從protected/config/main.php中分離出來?

回答

3

只包含來自另一個PHP文件共享的配置:

main.php:

return array 
(
    .... 
    'components' => array 
    (
     'db' => include('sharedDatabaseConfiguration.php'); 
    ) 
); 

sharedDatabaseConfiguration.php:

return array('host' => ...); 

根據存儲文件的位置,您可能需要添加路徑或其他內容。編輯:Btw,Yii也有一個花哨的CMap :: mergeArray()函數,可以做類似的事情(如果你想用另一個配置文件的內容「擴充」它的內容。默認生成的console.php對於這樣一個例子。

+1

非常好的解決方案! –

2

你可以在這裏找到一個想法:Manage application configuration in different modes。 基本上它的工作原理是導入不同的PHP文件(你的數據庫配置)和合幷包括array S:

<?php 
return CMap::mergeArray(
    require(dirname(__FILE__).'/db-config.php'), 
    array(
      'basePath' => dirname(__FILE__).DIRECTORY_SEPARATOR.'..', 
      'name' => 'Page Title', 
      ... 
    ) 
); 
?> 
2

您可以使用單獨的配置文件(如保護/配置/ 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 t o .gitignore。

相關問題