1

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

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

4

2 回答 2

2

如果您将取决于环境的代码放在控制器中,如下所示:

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

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


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

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


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

于 2011-03-13T19:13:32.467 回答
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'));
于 2011-03-13T19:25:03.290 回答