我一直在玩Zend_Config_Writer,虽然我可以按照自己的意愿去做,但我发现格式化程度有点令人不安:
[production : general]
;
; Production site configuration data.
;
locale = sv_SE
...
变为
[production : general]
locale = sv_SE
...
我意识到“新”配置是基于Zend_Config对象中保存的值编写的,并且该对象不包含任何注释或平淡行,但这使得新配置非常难以阅读,尤其是对于我的工人。
这可以以某种方式解决吗?我提出的最好的方法是使用具有“级联”继承的不同部分,但这似乎是一个愚蠢的想法
答案 0 :(得分:0)
正如您所说,Zend_Config_Writer
不会呈现任何评论,因为它们不会存储在Zend_Config
对象中。根据要渲染的ini文件的结构,您可以使用“级联”,至少可以清除冗余(对我来说它看起来不那么愚蠢,即使在标准application.ini
配置文件中也是如此...)。
当然,另一种解决方案可能是使用或创建其他东西来编写你的ini文件,但它可能有点过分。
希望有所帮助,
答案 1 :(得分:0)
经过一些实验后,我已经通过以下方式解决了我的问题,并成功进行了测试。
示例代码:
/* Load the config */
//Get the application-config and set 'allowModifications' => true
$config = new Zend_Config_Ini('../application/configs/application.ini',$state, array('allowModifications' => true));
//Get the second config-file
$configVersion = new Zend_Config_Ini('../application/configs/version.ini');
//Merge both config-files and then set it to read-only
$config->merge($configVersion);
$config->setReadOnly();
/* Update a part of the config */
$configVersion = new Zend_Config_Ini(
APPLICATION_PATH.'/configs/version.ini',
null,
array('skipExtends' => true, 'allowModifications' => true)
);
//Change some data here
$configVersion->newData = "Some data";
//Write the updated ini
$writer = new Zend_Config_Writer_Ini(
array('config' => $configVersion, 'filename' => 'Path_To_Config_files/version.ini')
);
try
{
$writer->write();
}
catch (Exception $e) {
//Error handling
}