我有我的配置通過Zend_Config_Ini適配器定義生產,開發和測試部分。在我的控制器中,我想根據我當前使用的環境/部分採取某些操作 - 例如我只想在生產和測試中發送電子郵件,而不是在開發中。確定Zend_Config在控制器中使用哪個部分?
有沒有辦法確定我使用控制器的環境/部分?我可以在配置中設置一個值,並在控制器中獲取值,但似乎會有更清晰的方法來確定。
我有我的配置通過Zend_Config_Ini適配器定義生產,開發和測試部分。在我的控制器中,我想根據我當前使用的環境/部分採取某些操作 - 例如我只想在生產和測試中發送電子郵件,而不是在開發中。確定Zend_Config在控制器中使用哪個部分?
有沒有辦法確定我使用控制器的環境/部分?我可以在配置中設置一個值,並在控制器中獲取值,但似乎會有更清晰的方法來確定。
如果你把依賴於環境,在你的控制器,這樣的代碼:
if ($env == 'production') {
// send mail
}
它增加了邏輯控制器 - 郵件的發送不依賴於配置了。
我認爲最好在配置文件中添加一個mail.enable
選項,並在代碼中使用該特定選項來確定是否必須發送郵件。
這樣:
當然,這意味着一對夫婦更配置條目(之一來啓用/禁用電子郵件,一個用於任何其他東西可以啓用與否);但最終,這就是配置的目的。
當您沿用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'));
忘了那個常數,謝謝,這回答了我的問題。但是,最後,我認爲Pascal是對的,我應該在配置中定義發送郵件。這樣,我可以在開發時快速開啓和關閉郵件... – robertlbolton 2011-03-13 20:46:28
好點...... – robertlbolton 2011-03-13 20:44:05
如果你想用這個記錄,看看Zend_Log進行。您可以在配置中定義不同的編寫器,並且可以根據環境輕鬆更改它。 – 2011-03-14 12:27:58