我的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设置的值没有正确继承,只使用了第一个定义的值。
这是为什么?这是设计的吗?只是预定义/标准环境值,如数据库和异常是否继承?
或者我在某处犯了错误?
答案 0 :(得分: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;
}
这应该像你期望的那样工作。
如果我猜错了,请你编辑你的问题,以包括你的引导程序的相关部分,其中创建配置对象并存储在注册表中。