我通过 Zend_Config_Ini 适配器定义了我的配置,包括生产、开发和测试部分。在我的控制器中,我想根据我当前使用的环境/部分采取某些操作 - 例如,我只想在生产和测试中发送电子邮件,而不是在开发中。
有没有办法确定我使用控制器的环境/部分?我可以在配置中设置一个值并在控制器中获取它,但似乎有一种更简洁的方法来确定。
我通过 Zend_Config_Ini 适配器定义了我的配置,包括生产、开发和测试部分。在我的控制器中,我想根据我当前使用的环境/部分采取某些操作 - 例如,我只想在生产和测试中发送电子邮件,而不是在开发中。
有没有办法确定我使用控制器的环境/部分?我可以在配置中设置一个值并在控制器中获取它,但似乎有一种更简洁的方法来确定。
如果您将取决于环境的代码放在控制器中,如下所示:
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'));