全局变量是能被任意位置修改的,同时常量又不够灵活。我们通常借用单例模式创建单例来保存数据这就是注册表。注册表即可以保存对象也能保存键值对。
保存对象
<?php
final class Registry{
//保存自身
private static $instance=NULL;
//保存请求
private $Request;
private function __construct(){}
static function instance(){
if (!isset(self::$instance)){
self::$instance = new self();
}
return self::$instance;
}
public function getRequest(){
return $this->Request;
}
public function setRequest(Request $request){
$this->Request = $request;
}
}
保存键值对方式的数据
<?php
final class Registry{
private static $instance = NULL;
private $values = array();
private function __construct(){}
public static function instance(){
if(isset(self::$instance)){
self::$instance = new self();
}
return self::$instance;
}
public function getvalue($key){
if(isset($this->values[$key])){
return $this->values[$key];
}
return null;
}
public function setvalue($key, $value){
$this->values[$key] = $value;
}
}