【发布时间】:2011-03-15 14:31:40
【问题描述】:
基本上,我想要一种简单、简单、单文件的方法来解析具有“高级”功能的 INI 文件,例如部分继承和属性嵌套,例如 Zend_Config_Ini。
例如:
[foo]
a = 1
b.a = 2
b.b = 3
b.c = 4
c = 5
[bar : foo]
b.b = 17
c = 42
会解析成
array(
'foo'=>array(
'a'=>'1',
'b'=>array(
'a'=>'2',
'b'=>'3',
'c'=>'4'
),
'c'=>'5'
),
'bar'=>array(
'a'=>'1',
'b'=>array(
'a'=>'2',
'b'=>'17',
'c'=>'4'
),
'c'=>'42'
)
)
PHP 的内置 parse_ini_file,除了带有简单部分和简单键的简单 INI 之外不处理任何其他内容。
我使用Zend_Config_Ini 的问题是我必须包含几乎整个 Zend_Config 子包,并且超级臃肿且可配置。
是否有一个 small 和 simple 库可用于解析这个?
如果没有,是否有我没有看到的简单实现?
我所说的小而简单,是指 INI 文件的 sfYaml。
在我(非常缺乏经验的)眼中,我必须使用 parse_ini_file 解析一次,然后返回并解决继承问题,然后遍历每个部分并递归扩展键...
更新:由于这似乎是一个热门问题,我想注意I have a simple class implementing this on GitHub,请随时发送拉取请求、问题等。
【问题讨论】:
-
你能解释一下为什么 Zend_Config_* 是“超级臃肿”吗?哦,你不需要整个树......只需 Zend_Config、Zend_Config_Exception 和 Zend_Exception
-
查看源文件,Zend_Config_Ini 依赖于 Zend_Config_Exception 和 Zend_Config。 Zend_Config_Exception 依赖于 Zend_Exception。所有功能都分布在多个类和文件中。诚然,我对采埃孚的 OOP 设计非常高度重视,但在这种情况下,它确实太过分了。
-
我想要它做的就是将一个 ini 解析为一个关联数组。我不想要或不需要 Zend_Config 具有的额外功能。
-
如果你想以艰难的方式来做,你可以选择 :) 虽然你可以对 Zend_Config_Ini 做一些小的修改来移除依赖。
-
我不会称 Zend_Config 臃肿。臃肿意味着过度功能,这反过来又意味着功能。我们谈论的是 Zend“构建你自己的 ACL 实现!”框架在这里。