【发布时间】:2011-02-03 16:25:02
【问题描述】:
我有一个脚本(一个小而简单的类似 CMS 的系统),我一直在处理它并将其用于客户站点。由于客户有不同的要求,我实现了一个模块系统,它允许我修改/或向 CMS 添加功能,而无需修改 CMS 脚本。
如何实现允许我从模块更改主 CMS 的默认设置的配置系统?
例如,CMS 默认有两个菜单:$menu = array('menu-1', 'menu-2');
如何从模块中覆盖此设置?
我想到的一个解决方案是使用常量和序列化/反序列化:
defined("BLA") or define("BLA", serialize(array(
'boo' => 'stuff',
'foo' => array('1', '2', '3'),
'moo' => true,
...
)));
所以我可以在 CMS 中定义常量之前运行的模块初始化函数中轻松覆盖此设置。
然后我在脚本中到处使用这些常量,例如:
$bla = unserialize(BLA);
...
foreach(unserialize(BLA) as $key => $value)...
另一种选择是使用全局变量,但人们说使用全局变量不好。
那么对于我正在寻找的东西有更好的解决方案吗?
【问题讨论】:
-
你为什么要这么做?如果你要走那条路,也可以定义一个全局数组。或者,您可以使用一个配置库,它允许您将数组存储为配置值。
-
因为我需要一个数组常量 :) 而且我不想使用全局变量
-
你在使用 MVC 框架吗?
-
没有。除了全局变量之外,还有其他方法可以存储我想要的数据并能够在任何地方访问吗?
-
让一个函数返回那个数组怎么样?
标签: php arrays performance constants