当我想编写并保存INI文件时,我遇到了问题。我使用Zend_Config_Ini来处理这个过程。
问题是我总是在使用整数或数字保存过程的每一行的值中得到“双引号”。这是示例
原始的application.ini文件
resources.session.use_only_cookies = 1
resources.session.remember_me_seconds = 86400
运行这些代码后
$config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini',
null,
array('skipExtends' => true,
'allowModifications' => true));
// Modify a value
$config->production->resources->db->adapter = 'foobar';
// Write the config file
$writer = new Zend_Config_Writer_Ini(array('config' => $config,
'filename' => APPLICATION_PATH . '/configs/application.ini'));
$writer->write();
application.ini行变为
resources.session.use_only_cookies = "1" //double quote appears T_T
resources.session.remember_me_seconds = "86400" //double quote appears T_T
我想要的是整数值必须保持不变(没有双引号)。
任何人都可以帮我解决这个问题吗?
非常感谢您提前
答案 0 :(得分:3)
正如Phil-Brown所说,当使用parse_ini_file()读取PHP中的ini文件时,总会得到字符串。此外,对于任何非字母数字字符的值,您应该用双引号括起来,因此Zend_Config_Writer会包含所有值。
答案 1 :(得分:1)
无论如何,
在我的解决方案中,我不得不在Zend中删除一些代码行。我更改的文件是 \ Zend \ Config \ Writer \ Ini.php ,第150行的方法 _prepareValue()如下所示
protected function _prepareValue($value)
{
/*
I comment it
if (is_integer($value) || is_float($value)) {
return $value;
} elseif (is_bool($value)) {
return ($value ? 'true' : 'false');
} else {
return '"' . addslashes($value) . '"';
}*/
return $value; // my line
}
只需评论Zend的原始代码,然后传递并返回$ value。
因此,通过更改此文件,我永远不会再获得任何双引号的字符串,布尔值或偶数。这就是我想要的。 :)
谢谢大家。