久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

下面小編就為大家?guī)硪黄仙U凱HP面向?qū)ο笾员砟J健P【幱X得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

注冊表模式可似把他想像成一個全局變量,所有的模塊都從這個全局變量里存取數(shù)據(jù),或者也可以想象成某個酒吧的許愿墻或留言版,上面的內(nèi)容大家都可以看到,也可以改寫。這里主要按作用域介紹三種類別的注冊表類(請求級別、會話級別、應(yīng)用程序級別)。

namespace woo\base;

//基類
abstract class Registry {
  abstract protected function get($key);
  abstract protected function set($key,$val);
}

//請求級別,他的生存周期通常為從用戶發(fā)起一個請求到后臺程序回復(fù)這個請求為止
class RequestRegistry extends Registry{
  private $values = array();
  private static $instance;
  
  private function __construct (){}

  static function instance(){    // 單例,即這個類只有一個唯一的實例
    if(!isset(self::$instance)){
      self::$instance = new self();
    }
    return self::$instance;
  }
  
  protected function get($key){
    if(isset($this->values[$key]){
      return $this->values[$key];
    }
    return null;
  }
  
  protected function set($key,$val){
    $this->values[$key] = $val;
  }
  
  static function getRequest(){
    return self::instance()->get('request');
  }
  
  static function setRequest(\woo\controller\Request $request){      //\woo\controller\Request 主要功能是處理用戶請求信息的一個類
    return self::instance()->set('request',$request);
  }
}

//會話級別,此示例中類的生存周期主要還是看SESSION的生存時間
class SessionRegistry extends Registry{
  private static $instance;
  private function __construct (){
    session_start();
  }
  
  static function instance(){
    if(!isset(self::$instance)){
      self::$instance = new self();
    }
    return self::$instance;
  }
  
  protected function get($key){
    if(isset($_SESSION[__CLASS__][$key])){
      return $_SESSION[__CLASS__][$key];
    }
    return null;
  }
  
  protected function set($key,$val){
    $_SESSION[__CLASS__][$key] = $val;
  }
  
  function setComplex(Complex $complex){
    self::instance()->set('complex',$complex);
  }
  
  function getComplex(){
    return self::instance()->get('complex');
  }
}

//應(yīng)用程序級別,此示例中因相關(guān)的值是保存在文本文件中,所以只要文件存在,保存的值也就一直存在
 class ApplicationRegistry extends Registry{
  private Static $instance;
  private $freezedir = 'data';
  private $values = array();
  private $mtimes = array();

  private function __construct (){}
   
  static function instance(){
    if(!isset(self::$instance)){
      self::$instance = new self();    
    }
    return self::$instance;
  }
  
  protected function get($key){
    $path = $this->freezedir . DIRECTORY_SEPARATOR . $key; // 保存值的文件的路徑
    if(file_exists($path)){
      clearstatcache();     // 清除filemtime緩存的上次記錄的文件修改時間
      $mtime = filemtime($path);
      if(!isset($this->mtimes[$key])){
        $this->mtimes[$key] = 0;
      }
      if($mtime > $this->mtimes[$key]){    // 文件內(nèi)容假如被修改過,那么就要重新獲取里面的值
        $data = file_get_contents($path);
        $this->mtimes[$key] = $mtime;
        return ($this->values[$key] = unserialize($data));
      }
    }
    if(isset($this->values[$key])){
      return $this->values[$key];
    }
    return null;
  }
  
  protected function set ($key,$val){
    $this->values[$key] = $val;
    $path = $this->freezedir . DIRECTORY_SEPARATOR . $key;
    file_put_contents($path,serialize($val));
    $this->mtimes[$key] = time();
  }
  
  static function getDSN(){
    return self::instance()->get('dsn');
  }
  
  static function setDSN($dsn){
    return self::instance()->set('dsn',$dsn);
  }
   
 }

以上這篇老生常談PHP面向?qū)ο笾员砟J骄褪切【幏窒斫o大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持。

【網(wǎng)站聲明】本站除付費源碼經(jīng)過測試外,其他素材未做測試,不保證完整性,網(wǎng)站上部分源碼僅限學習交流,請勿用于商業(yè)用途。如損害你的權(quán)益請聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

主站蜘蛛池模板: 国产精品区一区二区三区 | 一区二区三区四区免费在线观看 | 91色站| 欧美成视频在线观看 | 亚洲电影在线播放 | 精品香蕉一区二区三区 | 中文字字幕一区二区三区四区五区 | 精品精品视频 | 日韩精品一区二区三区高清免费 | 日本超碰 | 国产高清精品一区二区三区 | 一二区成人影院电影网 | www.99re | 操一草 | 精品久久久久国产免费第一页 | 天堂综合网 | 天堂资源 | 羞羞在线视频 | 成人欧美一区二区三区在线观看 | 欧美一区免费在线观看 | 91久久久久久久久久久久久 | 精品一区二区电影 | 久久精品欧美一区二区三区不卡 | 一区二区三区免费 | 一区二区三区不卡视频 | 二区久久 | 亚洲精品一区二区网址 | 亚洲欧美日韩精品久久亚洲区 | 久久久www成人免费无遮挡大片 | 午夜国产一区 | 亚洲国产高清高潮精品美女 | 日韩精品在线网站 | 精品国产99 | 99精品久久久久久久 | 精品国产乱码久久久久久影片 | 欧美日韩亚洲一区 | 日韩欧美国产一区二区 | 国产免费国产 | 日韩在线免费播放 | 午夜播放器在线观看 | 日韩一级 |