1. Cache类
Cache 类是一个工厂类,通过cache的 getInstance 方法生成了不同缓存驱动的实例,然后再通过统一的对外api对缓存进行操作:
Cache.geInstance
static function getInstance($type='',$options=array()){
static $_instance=array();
$guid=$type.to_guid_string($options);
if(!isset($_instance[$guid])){
$obj= new Cache();
$_instance[$guid]=$obj->connect($type,$options);
}
return $_instance[$guid];
}
getInstace 通过 类型参数和缓存驱动配置等参数生成了缓存对象。另外,我们看到 在这个方法里面写了一个 静态的 $_instace变量, 它缓存了每次生成的实例,这样有利于节省内存和提高效率。
2.一个隐藏的缓存驱动接口:
查看Cahce类我们发现,它主要操作了不同缓存驱动的4个通用方法,这4个方法就是要实现一个新的缓存驱动必须要实现的方法,我们可用将它提取出来当成了缓存驱动的接口
/**
*Thinkpphp 缓存驱动接口
**/
interface iCache{ //设置一个缓存
public function Set($name,$val); //获取缓存
public function Get($name); //删除缓存
public function Rm($name); //清除所有缓存
public function Clear();
}
只要实现了 这个四个方法,我们的缓存驱动类就可以使用了。
3.缓存类的使用
缓存在前台通过 S方法进行快速调用; 调用的时候 根据参数的类型和个数 执行不同的逻辑:
只有一个参数且是字符串的时候 获取缓存的数据
只有一个参数且是数组的时候 初始化缓存模块 并返回缓存实例 通过实例可以执行其他的缓存操作(增删改查) 有两个参数 进行设置3个参数 ,第3个参数是缓存的设置属性
总结,上面就是对thinkphp缓存的简单分析,希望对大家有帮助,感兴趣的同学,可以继续研究一下 每个缓存驱动的具体实现逻辑,相信有了上面的分析,应该不难!
来源:
http://www.kubiji.cn/juhe-id2294.html