gpt4 book ai didi

php - 在 PHP 中管理全局范围数据和设置的推荐方法?

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

经过几年的 PHP 开发,我看到和听到了各种存储“全局范围数据”的方法(全局、常量、ini/XML/YML 文件、数据库、单例属性...)。

我所说的“全局范围数据”是指:

  • 全局应用程序/项目设置,例如
    • 数据库配置
    • SMTP、FTP参数
  • 数据库标识符(例如,数据库中定义的特定语言或国家/地区的主键值)
  • 全局运行时设置,例如
    • 启用日志记录/调试
    • 环境是开发/测试/生产
  • 等等

...一旦检索到就不应更改,并且需要在项目代码的任何部分都可以轻松访问。

一些全局数据可能需要存储为关联数组(因此不能声明为常量)。
例如:每种语言的日期格式。顺便说一句,我看到了这个other SO question关于数组常量,但是在任何需要数组常量值的地方使用 unserialize 是不是更具可读性?

我的主要问题是:您建议以何种方式正确存储(我的意思是干净、可读、可靠)全局范围数据,为什么(优点/缺点)?

谢谢。

最佳答案

可以看看Zend_Config对于最频繁的配置实现。

  • array(仅限 php,直接但分散且难以阅读)
  • ini(易于手写)
  • xml(冗长且难以处理但非常灵活)
  • json(非常容易阅读,如果你也想直接通过 js 访问它会很棒)
  • yaml(基本上你直接写一个序列化数组)

当然,数组可能看起来是最直接和最简单的解决方案,因为它是纯 PHP,不需要任何特殊的解析器或编写器。

另一方面,其他格式也有明显的优势。 Zend_Config 文档写了关于 ini 文件的例子。

The INI format is specialized to provide both the ability to have a hierarchy of configuration data keys and inheritance between configuration data sections. Configuration data hierarchies are supported by separating the keys with the dot or period character (".").

使用常量不是一个好主意,因为:

  1. 您的应用程序不需要一直查看所有配置选项,并且
  2. 更重要的是,您不能嵌套常量,嵌套对于配置来说非常重要。

关于php - 在 PHP 中管理全局范围数据和设置的推荐方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5755280/

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