2011-03-13 25 views
1

我有我的配置通過Zend_Config_Ini適配器定義生產,開發和測試部分。在我的控制器中,我想根據我當前使用的環境/部分採取某些操作 - 例如我只想在生產和測試中發送電子郵件,而不是在開發中。確定Zend_Config在控制器中使用哪個部分?

有沒有辦法確定我使用控制器的環境/部分?我可以在配置中設置一個值,並在控制器中獲取值,但似乎會有更清晰的方法來確定。

回答

2

如果你把依賴於環境,在你的控制器,這樣的代碼:

if ($env == 'production') { 
    // send mail 
} 

它增加了邏輯控制器 - 郵件的發送不依賴於配置了。


我認爲最好在配置文件中添加一個mail.enable選項,並在代碼中使用該特定選項來確定是否必須發送郵件。
這樣:

  • 的配置定義,如果郵件要發送或不
  • 你想從你的開發環境中發送郵件的一天一個,你只需要改變配置一個條目檔案而不是代碼。


當然,這意味着一對夫婦更配置條目(之一來啓用/禁用電子郵件,一個用於任何其他東西可以啓用與否);但最終,這就是配置的目的。

+0

好點...... – robertlbolton 2011-03-13 20:44:05

+0

如果你想用這個記錄,看看Zend_Log進行。您可以在配置中定義不同的編寫器,並且可以根據環境輕鬆更改它。 – 2011-03-14 12:27:58

2

當您沿用ZF快速入門並使用命令行工具設置項目時,您可以使用一個名爲APPLICATION_ENV的常量。

例如

if(APPLICATION_ENV == "development") 
{ 
    // custom logic here 
} 

,這是獲得在index.php文件中的公共文件夾的定義:

// Define application environment 
defined('APPLICATION_ENV') 
       || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); 
+0

忘了那個常數,謝謝,這回答了我的問題。但是,最後,我認爲Pascal是對的,我應該在配置中定義發送郵件。這樣,我可以在開發時快速開啓和關閉郵件... – robertlbolton 2011-03-13 20:46:28

相關問題