PHP的配置管理器

Jac*_*ack 6 php xml ini config

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

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

Tar*_*rka 5

假设你想使用一个类来处理所有这些,你有3个选择:

  1. 有一个名为像一个基类,ReadConfigurationBase然后3实现类ReadConfigurationXML,ReadConfigurationINI以及ReadConfigurationDatabase和你必须选择是正确的
  2. 与上面相同,但是使用工厂来选择,基于传入的东西.就像你传递config.xml它会知道返回ReadConfigurationBase实现使用ReadConfigurationXML
  3. 有一个被调用的类ReadConfiguration,它充当第2步,但创建,包含和拥有其他3个类.

3个非基类只知道如何读取该类型的配置文件,并以通用方式传回信息.按照界面的思路思考:你知道你可以得到数据,但你不关心如何.

我建议选择3,因为它会让生活变得最简单.每次要添加存储方法时都需要进行一些修改,但这只会在ReadConfiguration类中添加一点.

有一种方法可以使它100%动态,但这会使问题复杂化,我认为你真的不需要它.