天天看点

23.php使用注册表

    全局变量是能被任意位置修改的,同时常量又不够灵活。我们通常借用单例模式创建单例来保存数据这就是注册表。注册表即可以保存对象也能保存键值对。

    保存对象

<?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;
    }
}