PHP的配置管理器

时间:2010-03-18 17:03:28

标签: php xml config ini

我正在研究PHP中配置文件加载部分的代码重新分解。早些时候我使用了多个'ini'文件,但现在我计划使用单个XML文件,该文件将包含项目的所有配置详细信息。问题是,如果有人想要ini或DB或其他任何配置文件而不是默认配置文件(在本例中为XML),我的代码应该处理该部分。

如果有人想要使用像ini这样的其他配置选项,他必须创建类似于我的XML配置文件的ini文件,我的配置管理器应该注意解析,存储在缓存中的所有内容。为此我需要一个机制让我说配置数据的正确接口,其中底层数据存储可以是任何东西(XML,DB,ini等)我也不希望它依赖于这些底层存储,并且在将来的任何时候这应该可扩展到其他文件格式。

2 个答案:

答案 0 :(得分:5)

假设您想要使用类来处理所有这些,您有3个选项:

  1. 有一个类似于ReadConfigurationBase的基类,然后是3个实现类,ReadConfigurationXMLReadConfigurationINIReadConfigurationDatabase,你必须选择正确的< / LI>
  2. 与上面相同,但是根据传入的内容使用工厂进行选择。就像您通过config.xml一样,它会知道使用ReadConfigurationBase
  3. >返回ReadConfigurationXML >
  4. 有一个名为ReadConfiguration的类,它作为第2步,但创建,包含和拥有其他3个类。
  5. 3个非基类只知道如何读取该类型的配置文件,并以通用方式传回信息。按照界面的思路思考:你知道你可以得到数据,但你不关心如何。

    我建议选项3,因为它会让生活更轻松。每次要添加存储方法时都需要进行一些修改,但这只会在ReadConfiguration类中添加一点。

    有一种方法可以让它100%动态,但这会使事情变得复杂,我认为你真的不需要它。

答案 1 :(得分:3)

看看Zend_Config。它为Arrays,Xml和Inis提供适配器。与Zend Framework中的所有组件一样,它可以与其余框架隔离使用。即使你不想使用它,它设计得很好,你也可以从它自己的配置管理器中得到一些想法。