2015-01-15 132 views
0

我在我的項目中有一個配置文件(.php),它包含一個包含所有項目設置的數組。此陣列具有類似於此的結構:管理兩個數據庫

'db' => 
    'prod' => 
     'host'  => '' 
     'dbname' => '' 
     'username' => '' 
     'password' => '' 
    'local' => 
     'host'  => '' 
     'dbname' => '' 
     'username' => '' 
     'password' => '' 
'other' => 'settings' 

我的問題是:我將如何管理這些雙連接信息?

我應該在本文件的後面,如果我在本地,將本地信息放在prod數組中?或者我應該使用多個文件進行配置,並在config.php中包含好的文件(然後我將包含在此項目的每個文件中)?

你會怎麼做?

謝謝。

+1

檢測本地\ prod使用一些代碼來決定使用的女巫憑據。 –

回答

1

正如@Dagon所說,通常你會發現你在哪個環境中,並閱讀一種配置或另一種配置。

你可以通過PHP檢測到它。您可以從PHP讀取主機名並相應地定義常數:

if(!defined('APPLICATION_ENV')) { 
    if(FALSE === stripos($_SERVER['SERVER_NAME']), 'www.example.com') { 
     define(APPLICATION_ENV, 'development'); 
    } else { 
     define(APPLICATION_ENV, 'production'); 
    } 
} 

這樣,您不必依賴環境設置。

一旦這個已經設置(無論是在您的Apache的配置,或者在系統級別),你可以使用getenv函數讀取它的值:

echo getenv('APPLICATION_ENV'); 

如果您想了解更多關於這一點,你可以閱讀這篇文章: Set Application_ENV via virtual host config and read this in PHP

+0

謝謝,正是我需要的。 – tleb

0

通過使用@Dagon和評論@Pere頁面的答案,我到達哪個適合我的解決方案:

在我$config陣列,我有3個數組: useprodlocal

use我可以把不會改變的設置,這取決於環境(生產或本地主機),我也有根據環境而改變的設置,但它們是空的。

prodlocal,我有適合每個環境的設置(在use中爲空的設置)。

在同一個文件,我去了的use(的foreach)的每一行,併爲空的,我補之以適當的值從prodlocal,未來取決於我的APPLICATION_ENV(設置爲local我機)。

謝謝。