【问题标题】:Configuration manager for PHPPHP 的配置管理器
【发布时间】:2011-01-29 03:13:07
【问题描述】:

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

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

【问题讨论】:

    标签: php xml config ini


    【解决方案1】:

    看看Zend_Config。它为数组、Xml 和 Inis 提供了适配器。像 Zend Framework 中的所有组件一样,它可以与其余的 Framework 隔离使用。即使您不想使用它,它的设计也很好,您可能会从中获得一些关于您自己的配置管理器的想法。

    【讨论】:

      【解决方案2】:

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

      1. 有一个名为 ReadConfigurationBase 的基类,然后是 3 个实现类 ReadConfigurationXMLReadConfigurationINIReadConfigurationDatabase,您必须选择正确的类
      2. 和上面一样,但是使用工厂来选择,基于传入的东西。就像你通过 config.xml 它会知道返回 ReadConfigurationBase 使用 ReadConfigurationXML 实现
      3. 有一个名为 ReadConfiguration 的类,它充当第 2 步,但创建、包含并拥有其他 3 个类。

      这 3 个非基类只知道如何读取该类型的配置文件,并以通用方式将信息传回。按照界面的思路思考:您知道可以获取数据,但您不在乎如何获取。

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

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

      【讨论】:

      • 感谢您的回答。你能详细说明第三个选项吗?
      猜你喜欢
      • 1970-01-01
      • 2012-07-08
      • 2015-10-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-05
      • 2014-03-04
      • 1970-01-01
      相关资源
      最近更新 更多