ThinkPHP3.1.3核心類 Cache.class.php

程式碼修行者發表於2014-12-17

/ThinkPHP/lib/core/Cache.class.php

一、示例程式碼

需要注意的就三個函式

1、連線快取

 public function connect($type='',$options=array()) {
        if(empty($type))  $type = C('DATA_CACHE_TYPE');
        $type  = strtolower(trim($type));
        $class = 'Cache'.ucwords($type); /*根據不同的型別 呼叫不同的快取引擎  預設TP只提供了 檔案快取方式 在 Lib/Driver/Cache/CacheFile.class.php*/
        if(class_exists($class))
            $cache = new $class($options);
        else
            throw_exception(L('_CACHE_TYPE_INVALID_').':'.$type);
        return $cache;
    }

2、取得快取類例項

static function getInstance() {
       $param = func_get_args();
        return get_instance_of(__CLASS__,'connect',$param);
    }
這裡呼叫了 function.php 中的 get_instance_of 函式,實際上 是吧 單例模式獨立出去了


3、佇列快取

作用就是 設定快取的長度 

如果不啟用快取佇列,在超時時間內,只要set快取 就是不斷新增快取

額設定的快取長度 如10 ,那麼根據佇列“先進先出”的原則,當快取數量大於10的時候,會刪除隊首的快取。


二、值得說的程式設計小細節:

1、

public function __get($name) {
        return $this->get($name);
    }

    public function __set($name,$value) {
        return $this->set($name,$value);
    }
這裡體現了物件導向 多型思想 

子類繼承Cache類, Cache類中的$this->set() 是呼叫的子類中的方法

2、function.php 中的 get_instance_of 函式

把單例模式獨立出來 是比較不錯的方式



相關文章