搜索
系统检测到您的用户名不符合规范:

ThinkPHP源码分析之 缓存模块

浏览:1516 发布日期:2016年12月21日 分类:技术分享 关键字: ThinkPHP缓存
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
最佳答案
评论() 相关
后面还有条评论,
评论支持使用[code][/code]标签添加代码
您需要登录后才可以评论 登录 | 立即注册
收藏
phmiscro
积分:922 等级:LV2
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /