Thinkphp 框架扩展之驱动扩展实例分析


Posted in PHP onApril 27, 2020

本文实例讲述了Thinkphp 框架扩展之驱动扩展。分享给大家供大家参考,具体如下:

每个类库都可以设计自己的驱动,因此3.2版本的驱动目录没有独立出来,而是放到各个类库的命名空间下面,例如:Think\Log类的驱动放到 Think\Log\Driver 命名空间下面,Think\Db类的驱动放到了 Think\Db\Driver 命名空间下面。

当然,这只是建议的位置,你完全可以根据项目的需要,把自己的驱动独立存放,例如: Home\Driver\Cache\Sae.class.php 则是一种把Cache驱动独立存放的方式(内置的核心类库都支持给驱动指定单独的命名空间)。

缓存驱动

缓存驱动默认位于Think\Cache\Driver命名空间下面,目前已经提供了包括APC、Db、Memcache、Shmop、Sqlite、Redis、Eaccelerator和Xcache缓存方式的驱动扩展,缓存驱动必须继承Think\Cache类,并实现下面的驱动接口:

方法说明 接口方法
架构方法 __construct($options='')
读取缓存 get($name)
写入缓存 set($name,$value,$expire=null)
删除缓存 rm($name)
清空缓存 clear()

下面是一个典型的缓存驱动类定义:

namespace Think\Cache\Driver;
use Think\Cache;
/**
 * Test缓存驱动
 */
class Test extends Cache {
  /**
   * 读取缓存
   * @access public
   * @param string $name 缓存变量名
   * @return mixed
   */
   public function get($name) {
    // 获取名称为name的缓存
   }
  /**
   * 写入缓存
   * @access public
   * @param string $name 缓存变量名
   * @param mixed $value 存储数据
   * @param integer $expire 有效时间(秒)
   * @return boolean
   */
   public function set($name, $value, $expire = null) {
    // 设置缓存
   }
  /**
   * 删除缓存
   * @access public
   * @param string $name 缓存变量名
   * @return boolean
   */
   public function rm($name) {
    // 删除名称为name的缓存
   }
 
  /**
   * 清除缓存
   * @access public
   * @return boolean
   */
  public function clear() {
    // 清空缓存
  }
}

注意:缓存驱动的有效期参数约定,如果设置为0 则表示永久缓存。

如果要让缓存驱动支持缓存队列功能,需要在缓存接口的set操作方法设置成功后添加如下代码:

if($this->options['length']>0) {
    // 记录缓存队列
    $this->queue($name);
 }

要配置当前默认的缓存驱动类型可以使用CACHE_TYPE参数,例如:

'CACHE_TYPE'=>'test'

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
如何获得PHP相关资料
Oct 09 PHP
利用PHP动态生成VRML网页
Oct 09 PHP
PHP新手上路(八)
Oct 09 PHP
php学习笔记之 函数声明
Jun 09 PHP
php二维数组用键名分组相加实例函数
Nov 06 PHP
Yii中render和renderPartial的区别
Sep 03 PHP
thinkphp文件引用与分支结构用法实例
Nov 26 PHP
PHP函数import_request_variables()用法分析
Apr 02 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
Nov 14 PHP
PHP用户注册邮件激活账户的实现代码
May 31 PHP
php正则表达式使用方法整理集合
Jan 31 PHP
PHP7 其他语言层面的修改
Mar 09 PHP
Thinkphp 框架扩展之应用模式实现方法分析
Apr 27 #PHP
php让json_encode不自动转义斜杠“/”的方法
Apr 27 #PHP
PHP Pipeline 实现中间件的示例代码
Apr 26 #PHP
PHP设计模式入门之状态模式原理与实现方法分析
Apr 26 #PHP
PHP设计模式入门之迭代器模式原理与实现方法分析
Apr 26 #PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
Apr 26 #PHP
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
Apr 26 #PHP
You might like
mysql 字段类型说明
2007/04/27 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
2011/07/28 PHP
解析php中session的实现原理以及大网站应用应注意的问题
2013/06/17 PHP
ThinkPHP字符串函数及常用函数汇总
2014/07/18 PHP
php邮件发送的两种方式
2020/04/28 PHP
PHP中STDCLASS用法实例分析
2016/11/11 PHP
如何实现iframe(嵌入式帧)的自适应高度
2006/07/26 Javascript
关于javascript document.createDocumentFragment()
2009/04/04 Javascript
基于jQuery的烟花效果(运动相关)点击屏幕出烟花
2012/06/14 Javascript
Js获取数组最大和最小值示例代码
2013/10/29 Javascript
js 上下左右键控制焦点(示例代码)
2013/12/14 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
thinkphp实现无限分类(使用递归)
2015/12/19 Javascript
JavaScript电子时钟倒计时
2016/01/09 Javascript
js removeChild 方法深入理解
2016/08/16 Javascript
JavaScript职责链模式概述
2016/09/17 Javascript
使用Math.max,Math.min获取数组中的最值实例
2017/04/25 Javascript
Vue 让元素抖动/摆动起来的实现代码
2018/05/31 Javascript
Python中使用第三方库xlrd来读取Excel示例
2015/04/05 Python
Python的装饰器使用详解
2017/06/26 Python
详解Python传入参数的几种方法
2019/05/16 Python
python Elasticsearch索引建立和数据的上传详解
2019/08/04 Python
解决Firefox下不支持outerHTML问题代码分享
2014/06/04 HTML / CSS
MATCHESFASHION.COM法国官网:英国奢侈品零售商
2018/01/04 全球购物
潘多拉珠宝英国官方网上商店:PANDORA英国
2018/06/12 全球购物
C++:局部变量能否和全局变量重名
2014/03/03 面试题
如何在.net Winform里面显示PDF文档
2012/09/11 面试题
教育学专业毕业生的自我鉴定
2013/11/26 职场文书
幼儿园教师节演讲稿
2014/09/03 职场文书
2014年国庆节演讲稿精选范文1500字
2014/09/25 职场文书
不听老师话的万能检讨书
2014/10/04 职场文书
保护动物的宣传语
2015/07/13 职场文书
同乡会致辞
2015/07/30 职场文书
解析:创业计划书和商业计划书二者之间到底有什么区别
2019/08/14 职场文书
php TP5框架生成二维码链接
2021/04/01 PHP
在Java中Collection的一些常用方法总结
2021/06/13 Java/Android