我应该如何存储项目的设置?

哪个更好-在我的所有设置中使用$settings数组:

$settings['max_photos'] = 30;
//...

或创建具有所有设置的单例Config类?
Class Config {
    private $max_photos = 30;
    //...
}

有什么好的例子吗?

最佳答案

我认为最好使用常量进行配置。例如,使用类常量:

class Config {
    const
    max_photos     = 30,
    something_else = 100,
    // ...
    ;
}

echo Config::max_photos;

如果您有PHP 5.3,也可以将它们定义为全局常量:
const MAX_PHOTOS = 30;

echo MAX_PHOTOS;

但是我认为这远没有那么简单明了。

显然,这仅在您仅存储常量(即标量,非表达式值)的情况下才有效。例如,如果您的配置包含数组,那么它将不再起作用。在这种情况下,我将使用具有公共(public)静态属性的Config类:
class Config {
    public static $per_page = 30;
    public static $array = array(...);
}

echo Config::$per_page;

后者与$config数组方法非常相似,但是有一个好处(或者这可能是一个缺点?),可以从任何地方访问该类,包括函数和类,而除非您导入它,否则只能在全局空间中访问该数组。使用global $config;进入函数/类。

关于php - $ settings数组还是配置类来存储项目设置?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3270661/

10-12 17:27
查看更多