$ settings数组或Config类来存储项目设置?

ide*_*eea 8 php oop configuration class

我该如何存储项目设置?

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

$settings['max_photos'] = 30;
//...
Run Code Online (Sandbox Code Playgroud)

或者创建一个Config包含所有设置的单例类?

Class Config {
    private $max_photos = 30;
    //...
}
Run Code Online (Sandbox Code Playgroud)

有什么好例子吗?

Nik*_*kiC 11

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

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

echo Config::max_photos;
Run Code Online (Sandbox Code Playgroud)

如果你有PHP 5.3,你也可以将它们定义为全局常量:

const MAX_PHOTOS = 30;

echo MAX_PHOTOS;
Run Code Online (Sandbox Code Playgroud)

但我认为这远不那么干净和直截了当.

显然,只有你只存储常量,即标量,非表达式值,这才会起作用.例如,如果您的配置包含数组,则此功能将不再起作用.在这种情况下,我将使用具有公共静态属性的Config类:

class Config {
    public static $per_page = 30;
    public static $array = array(...);
}

echo Config::$per_page;
Run Code Online (Sandbox Code Playgroud)

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


Sag*_*rpe 1

最好的方法是将您的设置存储在文件中。并操作该文件声明一个对文件进行操作的类