在Zend_Config_Ini application.ini中使用类常量

时间:2012-10-26 12:07:36

标签: zend-framework zend-config

我在我的一个类中定义了几个常量,并希望在我的application.ini中使用它们,这可能吗?

logger.main.level = \My\App\Logger::WARNING

这似乎不起作用,它只是将其解析为字符串

3 个答案:

答案 0 :(得分:2)

我相信PHP的parse_ini_file()函数只能访问全局空间中的常量而不能访问类空间。

我无法在任何.ini文件中使用My_Class::MYCONSTMy\Class::MYCONST

答案 1 :(得分:2)

如果您想在application.ini中使用常量的值,则需要在/public/index.php文件中定义常量(请参阅APPLICATION_PATH)。

如果你想在你的代码中干净利落地做,我会手动使用日志级别和数值(假设常量是Zend_Log中的数字),因为这个值不太可能改变或者在index.php并定义一个名为LOGLEVEL_WARNING的新常量(然后您可以从类中静态获取常量值),您可以在application.ini文件中使用logger.main.level = LOGLEVEL_WARNING文件。 1}}

我的选择将是application.ini文件中的数值,如下所示:

resources.log.stream.writerName = "Stream"
resources.log.stream.writerParams.stream = APPLICATION_PATH "/../data/logs/application_" DATESTAMP ".log"
resources.log.stream.writerParams.mode = "a"
resources.log.stream.filterName = "Priority"
resources.log.stream.filterParams.priority = 4

看看APPLICATION_PATHDATESTAMP这些是我在index.php中定义的常量

答案 2 :(得分:0)

您可以在application.ini文件中定义常量,然后在控制器中使用以下代码调用它们。

public function init() {
    //Getting constants from application.ini file
    $registry = Zend_Registry::getInstance();
    $this->_constants = $registry->app_config->constants;
}

在application.ini文件中定义常量的位置如下所示

;My Constants
constants.MY_CONSTANT="value"