我正在研究PHP中配置文件加载部分的代码重新分解。早些时候我使用了多个'ini'文件,但现在我计划使用单个XML文件,该文件将包含项目的所有配置详细信息。问题是,如果有人想要ini或DB或其他任何配置文件而不是默认配置文件(在本例中为XML),我的代码应该处理该部分。
如果有人想要使用像ini这样的其他配置选项,他必须创建类似于我的XML配置文件的ini文件,我的配置管理器应该注意解析,存储在缓存中的所有内容。为此我需要一个机制让我说配置数据的正确接口,其中底层数据存储可以是任何东西(XML,DB,ini等)我也不希望它依赖于这些底层存储,并且在将来的任何时候这应该可扩展到其他文件格式。
答案 0 :(得分:5)
假设您想要使用类来处理所有这些,您有3个选项:
ReadConfigurationBase
的基类,然后是3个实现类,ReadConfigurationXML
,ReadConfigurationINI
和ReadConfigurationDatabase
,你必须选择正确的< / LI>
config.xml
一样,它会知道使用ReadConfigurationBase
ReadConfigurationXML
>
ReadConfiguration
的类,它作为第2步,但创建,包含和拥有其他3个类。3个非基类只知道如何读取该类型的配置文件,并以通用方式传回信息。按照界面的思路思考:你知道你可以得到数据,但你不关心如何。
我建议选项3,因为它会让生活更轻松。每次要添加存储方法时都需要进行一些修改,但这只会在ReadConfiguration
类中添加一点。
有一种方法可以让它100%动态,但这会使事情变得复杂,我认为你真的不需要它。
答案 1 :(得分:3)
看看Zend_Config。它为Arrays,Xml和Inis提供适配器。与Zend Framework中的所有组件一样,它可以与其余框架隔离使用。即使你不想使用它,它设计得很好,你也可以从它自己的配置管理器中得到一些想法。