配置设置策略

时间:2013-01-11 02:17:36

标签: php

在我用PHP开发的CMS中,我有配置设置。它们保持不变。我选择这种方法是因为常量总是具有全局范围,在遵循全部大写约定时很容易在代码中看到,并且不会被意外覆盖。我的理解是,对常数的引用非常有效;那是真的吗?。

这些常量有两个子集。有些是硬编码的,因为它们与我的代码或安全性有关。其他的存储在设置表(MySQL)中,初始化被读入常量。

我担心这些常量的数量会增加,而且我可能会与将来使用的第三方PHP模块发生冲突。

我想知道是否有更好的方法来处理这些设置。

我的主要想法是创建一个全局变量(例如,$ settings),一个关联(键值)数组,它与我现在拥有的常量一一对应。因此,而不是

 define('MY_SETTING, 'setting value');

我会

 $setting['my_setting'] = 'setting value';

当然,有两种方法可以访问它。最简单的方法是直接引用$ setting数组,这需要在每个访问设置的函数中使用全局语句(这至少占其中的大多数)。另一种方法是使用单个函数(例如,设置('my_setting))来引用全局数组以返回值。两者在语法上都很紧凑,但不像常量那样紧凑。

我最后的想法是为系统中的每个常量添加一个常量前缀。 MY_SETTING将变为XY_MY_SETTING。这至少可以降低碰撞风险。

您会推荐其他方法吗?关于我到目前为止所做的任何评论?

感谢。

附加信息:我决定对四种访问方法进行快速性能测试。结果(显示的数字是相对测量值):

  • 常数:32
  • 直接引用关联数组:29
  • 访问关联数组的函数调用:91
  • 获取课程方法:103

显然,处理函数或方法的开销很高,常量和数组引用之间的差异可以忽略不计。

1 个答案:

答案 0 :(得分:1)

您可以创建设置类。

根据需要添加其他属性,并为其添加getter&setter。

这将使其与程序的其余部分分开,同时保持可见。