存储网站设置的最佳做法?

时间:2012-05-01 04:28:40

标签: php settings

最初,我的目的是创建一个类(面向对象)来将设置存储为常量。例如,在PHP中:

class Settings{
     const test = 'foobar!';
}

但是稍后,我认为这种方法不会让管理员用户修改这些设置。似乎只有非必要的修改设置应该被声明为常量,而其他设置应该被声明为私有变量,然后应用程序将首先查找数据库设置表中的设置是否可用,如果没有,它将使用默认值来自get(),在Settings类中定义的set()函数。 这是一个好方法吗?什么是最好的方法?我很欣赏有关这个问题的任何建议。

4 个答案:

答案 0 :(得分:3)

我更喜欢与您的方法类似,但使用私有静态属性key =>值数组与getter和setter。这样,您可以将它们绑定到文件或数据库。

$value = Classname::getparam('configsetting');
Classname::setparam('configsetting', $newvalue);

别忘了让get / set param mehods公开静态!

这里的完整课程看起来像......

class Classname{
    private static  $params = null;  

    public static function getparam($key){
        if(is_null(self::$params){
             self::$params = array();
             //initialize param array here from file, db, or just hardcoded values...
        }
        return isset(self::$params[$key])?self::$params[$key]:null;
     }

    public static function setparam($key, $value){
        if(is_null(self::$params){
             self::$params = array();
             //initialize array here
        }
        self::$params[$key] = $value;
     }
 } 

答案 1 :(得分:1)

直接回答::你的方法很好,它的所有偏好。

根据是否要更改设置,您可能需要查看mysql存储或将设置存储到文件中,但是如果它们不会被更改,那么您的方法就可以了。 / p>

答案 2 :(得分:0)

您可能希望考虑使用YAML等格式的配置文件。

答案 3 :(得分:0)

我通常会将不需要修改的设置值作为常量和其他具有modify选项的设置保存到数据库中(getter / setter)。 然后我将数据缓存更长的时间,这样我就不必为每个请求访问数据库。 当管理员更改任何设置时,缓存无效,新值存储在缓存中。

还有另一种将设置数据存储在XML文件中的方法。谁能告诉我将设置数据存储在XML文件中与将其存储在数据库中相比有什么优势呢?