要在全局中保证读取到的值唯一,使用单例模式是较好的选择,实现代码:
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');
这样在代码中写入和读取的就是统一的内容了。