我通过Zend_Config_Ini适配器定义了我的配置,包括生产,开发和测试部分。在我的控制器中,我想根据我当前使用的环境/部分采取某些行动 - 例如我只想在生产和测试中发送电子邮件,而不是在开发中。
有没有办法确定我使用控制器的环境/部分?我可以在配置中设置一个值并在控制器中抓取它,但似乎有一个更清晰的方法来确定。
答案 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'));