单例模式设置和和获取配置项

要在全局中保证读取到的值唯一,使用单例模式是较好的选择,实现代码:

class Config
{
    // 声明$instance为私有静态类型,用于保存当前类实例化后的对象
    private static $instance = null;
    // 数据库连接句柄
    private $config = array();

    // 这是获取当前类对象的唯一方式
    public static function getInstance()
    {
        // 检查对象是否已经存在,不存在则实例化后保存到$instance属性
        if(self::$instance == null) {
            self::$instance = new self();
        }
        return self::$instance;
    }

    // 设置配置项
    public function setConfig($key, $value)
    {
        $this->config[$key] = $value;
    }

    // 获取配置项
    public function getConfig($key)
    {
        return $this->config[$key];
    }

    // 声明为私有方法,禁止外部程序使用new实例化,只能在内部new
    private function __construct(){}
    // 声明成私有方法,禁止克隆对象
    private function __clone(){}
    // 声明成私有方法,禁止重建对象
    private function __wakeup(){}
}

客户端使用:

$config = Config::getInstance();
$config->setConfig('name', 'garymeng.com');
echo $config->getConfig('name');

这样在代码中写入和读取的就是统一的内容了。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

昵称 *