php - $settings 数组或配置类来存储项目设置?

标签 php oop class configuration

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

哪个更好 - 使用包含我所有设置的 $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/

相关文章:

php - 'bin' 不是内部或外部命令,也不是可运行的程序 或批处理文件

php - mysql从同一列中的不同行中减去

java - 如何从不同类型的 vector 数组中随机选择相同类型的对象?

python 3 : how to check if an object is a function?

C++ 函数常量

php - 如何判断该函数是否是从输出缓冲回调中调用的?

php - 计算时差(日期时间)时的 strtotime 和奇怪的结果

c++ - 如何引用二维数组中的对象?

perl - 在 perl 中调用基本构造函数

php - 在 PHP 中创建两个相同的静态类