确定Zend_Config在控制器中使用哪个部分?

时间:2011-03-13 19:08:14

标签: php zend-framework zend-config

我通过Zend_Config_Ini适配器定义了我的配置,包括生产,开发和测试部分。在我的控制器中,我想根据我当前使用的环境/部分采取某些行动 - 例如我只想在生产和测试中发送电子邮件,而不是在开发中。

有没有办法确定我使用控制器的环境/部分?我可以在配置中设置一个值并在控制器中抓取它,但似乎有一个更清晰的方法来确定。

2 个答案:

答案 0 :(得分:2)

如果您将依赖于环境的代码放在控制器中,请执行以下操作:

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

它在控制器中添加逻辑 - 发送邮件不再依赖于配置。


我认为最好在配置文件中添加一个mail.enable选项,并在代码中使用该特定选项来确定是否必须发送邮件。
这样:

  • 配置是定义是否应发送邮件的配置
  • 您希望从开发环境发送邮件的那一天,您只需更改配置文件中的一个条目;而不是代码。


当然,它意味着更多的配置条目(一个用于启用/禁用电子邮件,一个用于任何其他可以启用或不启用的东西);但是,最后,这就是配置的用途。

答案 1 :(得分:2)

当您按照ZF快速启动并使用命令行工具设置项目时,您可以使用一个名为APPLICATION_ENV的常量。

E.g。

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'));