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 MemCached 高级缓存应用代码
Aug 05 PHP
PHP 处理TXT文件(打开/关闭/检查/读取)
May 13 PHP
解析php中session的实现原理以及大网站应用应注意的问题
Jun 17 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
Aug 08 PHP
php实现递归与无限分类的方法
Feb 16 PHP
简单解决新浪SAE无法上传文件的问题
May 13 PHP
Symfony2开发之控制器用法实例分析
Feb 05 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
Oct 14 PHP
浅谈htmlentities 、htmlspecialchars、addslashes的使用方法
Dec 09 PHP
php进程daemon化的正确实现方法
Sep 06 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
Jun 22 PHP
关于laravel模板中生成URL的几种模式总结
Oct 18 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
十大催泪虐心动漫,你能坚持看到第几部?
2020/03/04 日漫
咖啡产品发展的三大浪潮
2021/03/04 咖啡文化
PHP开发过程中常用函数收藏
2009/12/14 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
ThinkPHP3.1新特性之内容解析输出详解
2014/06/19 PHP
PHP使用缓存即时输出内容(output buffering)的方法
2015/08/03 PHP
php封装好的人民币数值转中文大写类
2015/12/20 PHP
PHP等比例压缩图片的实例代码
2018/07/26 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
asp.net和asp下ACCESS的参数化查询
2008/06/11 Javascript
js快速排序的实现代码
2013/12/08 Javascript
重写document.write实现无阻塞加载js广告(补充)
2014/12/12 Javascript
Javascript页面跳转常见实现方式汇总
2015/11/28 Javascript
jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用
2016/01/23 Javascript
关于RequireJS的简单介绍即使用方法
2016/10/20 Javascript
Vue-Router实现页面正在加载特效方法示例
2017/02/12 Javascript
js动态引入的四种方法
2018/05/05 Javascript
vue-router重定向和路由别名的使用讲解
2019/01/19 Javascript
uni-app如何实现增量更新功能
2020/01/03 Javascript
JavaScript实现移动端弹窗后禁止滚动
2020/05/25 Javascript
JS实现拖拽元素时与另一元素碰撞检测
2020/08/27 Javascript
[15:28]DOTA2 HEROS教学视频教你分分钟做大人-剧毒术士
2014/06/13 DOTA
python读取Android permission文件
2013/11/01 Python
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
Python实现比较扑克牌大小程序代码示例
2017/12/06 Python
Ubuntu下Anaconda和Pycharm配置方法详解
2019/06/14 Python
Python实现大数据收集至excel的思路详解
2020/01/03 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
2020/04/27 Python
自荐书格式
2013/12/01 职场文书
高校辅导员推荐信范文
2013/12/25 职场文书
信息管理应届生求职信
2014/03/07 职场文书
党员年度个人总结
2015/02/14 职场文书
2015年度电厂个人工作总结
2015/05/13 职场文书
2016年“抗战胜利纪念日”71周年校园广播稿
2015/12/18 职场文书
劳务派遣管理制度(样本)
2019/08/23 职场文书
详细分析PHP7与PHP5区别
2021/06/26 PHP