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 相关文章推荐
动态新闻发布的实现及其技巧
Oct 09 PHP
php 日期时间处理函数小结
Dec 18 PHP
完美实现GIF动画缩略图的php代码
Jan 02 PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
Jul 03 PHP
QQ登录 PHP OAuth示例代码
Jul 20 PHP
php获取中文拼音首字母类和函数分享
Apr 24 PHP
php版淘宝网查询商品接口代码示例
Jun 17 PHP
typecho插件编写教程(三):保存配置
May 28 PHP
php脚本运行时的超时机制详解
Feb 17 PHP
php+jQuery+Ajax简单实现页面异步刷新
Aug 08 PHP
php项目中类的自动加载实例讲解
Sep 12 PHP
php写入txt乱码的解决方法
Sep 17 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
phpfans留言版用到的install.php
2007/01/04 PHP
使用zend studio for eclipse不能激活代码提示功能的解决办法
2009/10/11 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
2012/09/19 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
2015/10/21 PHP
php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
2016/07/12 PHP
ExtJs GridPanel简单的增删改实现代码
2010/08/26 Javascript
js Form.elements[i]的使用实例
2011/11/13 Javascript
form表单中去掉默认的enter键提交并绑定js方法实现代码
2013/04/01 Javascript
详解JavaScript中undefined与null的区别
2014/03/29 Javascript
基于jQuery实现复选框的全选 全不选 反选功能
2014/11/24 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
浅谈js中的三种继承方式及其优缺点
2016/08/10 Javascript
URL中“#” “?” &“”号的作用浅析
2017/02/04 Javascript
使用javaScript实现鼠标拖拽事件
2020/04/03 Javascript
Angular4实现图片上传预览路径不安全的问题解决
2017/12/25 Javascript
详解vue-cli项目中怎么使用mock数据
2018/05/29 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
2018/11/14 jQuery
利用jquery和BootStrap实现动态滚动条效果
2018/12/03 jQuery
浅谈Vue.js之初始化el以及数据的绑定说明
2019/11/14 Javascript
three.js 制作动态二维码的示例代码
2020/07/31 Javascript
nodeJs项目在阿里云的简单部署
2020/11/27 NodeJs
[55:25]VGJ.T vs Optic Supermajor小组赛D组 BO3 第三场 6.3
2018/06/04 DOTA
[01:00:30]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第二场 10.31
2020/11/02 DOTA
[01:00:17]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第二场 1月25日
2021/03/11 DOTA
python实现查找两个字符串中相同字符并输出的方法
2015/07/11 Python
Python Django 命名空间模式的实现
2019/08/09 Python
Python 转换文本编码实现解析
2019/08/27 Python
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
2019/12/26 Python
如何解决cmd运行python提示不是内部命令
2020/07/01 Python
Python正则re模块使用步骤及原理解析
2020/08/18 Python
利用html5 canvas动态画饼状图的示例代码
2018/04/02 HTML / CSS
全球工业:Global Industrial
2020/02/01 全球购物
公务员平时考核实施方案
2014/03/11 职场文书
《水上飞机》教学反思
2014/04/10 职场文书
售房协议书范本
2015/08/11 职场文书
Android开发实现极为简单的QQ登录页面
2022/04/24 Java/Android