0

我的 application.ini 中有这些值

[production]
; Database;
    resources.db.adapter = "pdo_mysql"
    resources.db.params.host = "localhost"
    resources.db.params.username = "user1"
    resources.db.params.password = "password1"
    resources.db.params.dbname = "projects__01"


;Names
    website.settings.websiteName = "My website 1"
    website.settings.websiteUrl = "http://www.mydomain1.com"
    website.settings.title = "mydomain.com - mydomain"
    website.settings.titleSeperator = " - "


[staging : production]
; Database;
    resources.db.adapter = "pdo_mysql"
    resources.db.params.host = "localhost"
    resources.db.params.username = "user2"
    resources.db.params.password = "password2"
    resources.db.params.dbname = "projects__02"

;Exceptions
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1
    resources.frontController.params.displayExceptions = 1

;Title and url
    website.settings.websiteName = "My website 2"
    website.settings.websiteUrl = "http://www.mydomain2.com"


[development : staging]
;Database
    resources.db.adapter = "pdo_mysql"
    resources.db.params.host = "localhost"
    resources.db.params.username = "user3"
    resources.db.params.password = "password3"
    resources.db.params.dbname = "projects__03"


;Title and url
    website.settings.websiteName = "My website 3"
    website.settings.websiteUrl = "http://www.mydomain3.com"

问题是所有数据库和异常值都可以正常工作,这意味着它们按照应有的方式正确继承

但是我为 Title 和 url 设置的值不能正确继承,只使用第一个定义的值。

为什么是这样?这是设计使然吗?是否仅继承预定义/标准环境值,例如数据库和异常?

还是我在某个地方犯了错误?

4

1 回答 1

1

好的,从您的评论看来,您在引导程序中创建了一个新的 Zend_Config 对象,将其放入注册表中,而这并没有返回您所期望的。如果是这种情况,我猜你已经省略了配置对象的第二个参数,所以你有这样的东西:

$config = new Zend_Config_Ini(APPLICATION_PATH.'/configs/application.ini');

但你应该拥有的更像是这样的:

$config = new Zend_Config_Ini(APPLICATION_PATH.'/configs/application.ini', APPLICATION_ENV);

第二个参数告诉它要使用配置文件的哪个部分,否则它将始终获得相同的值。

但是,您实际上不需要重新解析配置文件,因为 Zend Application 已经这样做了。相反,您可以从引导类访问选项并使用它们来创建对象(或仅以现有数组格式存储选项):

protected function _initConfig()
{
    $config = new Zend_Config($this->getOptions());
    Zend_Registry::set('config', $config);

    return $config;
}

这应该可以按您的预期工作。

如果我的猜测是错误的,请您编辑您的问题以包含引导程序的相关部分,其中配置对象被创建并存储在注册表中。

于 2011-10-19T22:49:18.870 回答