gpt4 book ai didi

php - 寻找想法/解决方案来管理应用程序配置设置

转载 作者:可可西里 更新时间:2023-11-01 00:12:00 25 4
gpt4 key购买 nike

我正在用 PHP 构建一个 MVC 框架,它需要设置一些默认配置变量/常量。示例配置变量将是保存日志文件的位置、是否记录查询、Doctrine 设置等。因为我希望开发人员能够以最少的麻烦创建新项目,所以这些配置变量应该具有默认值。然而,为了使这个框架真正有用,我需要它们能够在项目引导文件中或从 Controller 或模型中覆盖这些默认值。我很想使用常量,但它们不能被覆盖。我觉得好像必须有一个我只是看不到的简单解决方案(也许是设计模式?)。任何建议将不胜感激,谢谢。

最佳答案

在这种情况下,我可能会:

  • 创建一个类来处理所有与配置相关的事情
    • 该类将包含获取/设置配置选项的方法;无论您的应用需要什么
    • 它还会在合适的时候定义默认值
  • 使用 .ini 或 .xml 文件,可以在其中重新定义配置值

实例化类时:

  • 您已经有了默认值
  • 您解析 .ini 或 .xml 文件
  • 该配置文件中定义的每个值都用于覆盖类中定义的相应默认值。


一个更复杂但可能更好的解决方案可能是:

  • 仍然有那个配置类,但不使用它来存储任何默认值
  • 有一个 .ini 或 .xml 文件来存储默认值
  • 有一个 .ini 或 .xml 文件,人们可以在其中覆盖默认文件中定义的值
  • 加载包含默认值的文件,然后加载包含特定值的文件

此解决方案的优点是:

  • PHP 类中没有存储配置值
  • 所有可以覆盖的配置选项都已在 .ini/.xml 文件中定义,这意味着人们只需将一行复制/粘贴到他们的特定文件即可覆盖:无需查看 PHP类并思考“我如何将其转换为配置文件?”


更多注意事项:

  • 您可能希望使用某种缓存机制,而不是在每次请求时重新解析文件
  • Zend_ConfigZend_Config_Ini可能有帮助;即使您不使用它们,因为您正在编写自己的框架,您也可能想看看它们的作用——如果我没记错的话,Zend_Config_Ini 允许在 . ini文件

玩得开心!

关于php - 寻找想法/解决方案来管理应用程序配置设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1352974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com