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 相关文章推荐
自己动手做一个SQL解释器
Oct 09 PHP
php 301转向实现代码
Sep 18 PHP
PHPMyAdmin 快速配置方法
May 11 PHP
PHP学习散记_编码(json_encode 中文不显示)
Nov 10 PHP
php中判断文件存在是用file_exists还是is_file的整理
Sep 12 PHP
深入php函数file_get_contents超时处理的方法详解
Jun 03 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
Oct 30 PHP
PHP生成图像验证码的方法小结(2种方法)
Jul 18 PHP
PHP封装的多文件上传类实例与用法详解
Feb 07 PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
Mar 27 PHP
thinkphp5框架实现的自定义扩展类操作示例
May 16 PHP
PHP实现的文件浏览器功能简单示例
Sep 12 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
php从数组中随机抽取一些元素的代码
2012/11/05 PHP
一致性哈希算法以及其PHP实现详细解析
2013/08/24 PHP
php带抄送和密件抄送的邮件发送方法
2015/03/20 PHP
PHP上传文件及图片到七牛的方法
2018/07/25 PHP
防止文件缓存的js代码
2013/01/10 Javascript
关于js注册事件的常用方法
2013/04/03 Javascript
JS this作用域以及GET传输值过长的问题解决方法
2013/08/06 Javascript
从jquery的过滤器.filter()方法想到的
2013/09/29 Javascript
用循环或if语句从json中取数据示例
2014/08/18 Javascript
原生javascript实现Tab选项卡切换功能
2015/01/12 Javascript
JS/Jquery判断对象为空的方法
2015/06/11 Javascript
Mac下使用charles遇到的问题以及解决办法
2017/01/10 Javascript
原生javascript移动端滑动banner效果
2017/03/10 Javascript
angularJS之$http:与服务器交互示例
2017/03/17 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
微信小程序template模板实例详解
2017/10/27 Javascript
Vim快速合并行及vim 将文件所有行合并到一行
2017/11/27 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
2018/12/18 Javascript
keep-alive不能缓存多层级路由菜单问题解决
2020/03/10 Javascript
vue实现点击按钮“查看详情”弹窗展示详情列表操作
2020/09/09 Javascript
[52:40]完美世界DOTA2联赛PWL S2 Magma vs GXR 第一场 11.29
2020/12/02 DOTA
使用python实现rsa算法代码
2016/02/17 Python
在Django同1个页面中的多表单处理详解
2017/01/25 Python
TensorFlow 滑动平均的示例代码
2018/06/19 Python
django2.2 和 PyMySQL版本兼容问题
2020/02/17 Python
Django 再谈一谈json序列化
2020/03/16 Python
PyCharm中关于安装第三方包的三个建议
2020/09/17 Python
突袭HTML5之Javascript API扩展4—拖拽(Drag/Drop)概述
2013/01/31 HTML / CSS
NUK奶瓶美国官网:NUK美国
2016/09/26 全球购物
美国南部最大的家族百货公司:Belk
2017/01/30 全球购物
表扬信格式
2014/01/12 职场文书
调查研究项目计划书
2014/04/29 职场文书
工作求职信
2014/07/04 职场文书
亲子运动会的活动方案
2014/08/17 职场文书
老兵退伍标语
2014/10/07 职场文书