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 相关文章推荐
弄了个检测传输的参数是否为数字的Function
Dec 06 PHP
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
Nov 14 PHP
一道求$b相对于$a的相对路径的php代码
Aug 08 PHP
php设计模式 Visitor 访问者模式
Jun 28 PHP
php基于mcrypt的加密解密实例
Oct 27 PHP
php实现ip白名单黑名单功能
Mar 12 PHP
ThinkPHP进程计数类Process用法实例详解
Sep 25 PHP
PHP仿tp实现mvc框架基本设计思路与实现方法分析
May 23 PHP
PHP yield关键字功能与用法分析
Jan 03 PHP
thinkPHP框架中layer.js的封装与使用方法示例
Jan 18 PHP
PHP vsprintf()函数格式化字符串操作原理解析
Jul 14 PHP
PHP底层运行机制与工作原理详解
Jul 31 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
如何使用Linux的Crontab定时执行PHP脚本的方法
2011/12/19 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
php实现微信支付之现金红包
2018/05/30 PHP
ExtJS 2.0实用简明教程 之ExtJS版的Hello
2009/04/29 Javascript
解决Extjs上传图片无法预览的解决方法
2012/03/22 Javascript
JQuery中form验证出错信息的查看方法
2013/10/08 Javascript
javascript避免数字计算精度误差的方法详解
2014/03/05 Javascript
JavaScript判断图片是否已经加载完毕的方法汇总
2016/02/05 Javascript
AngularJS使用拦截器实现的loading功能完整实例
2017/05/17 Javascript
Vue2.0 事件的广播与接收(观察者模式)
2018/03/14 Javascript
npm 更改默认全局路径以及国内镜像的方法
2018/05/16 Javascript
NodeJS加密解密及node-rsa加密解密用法详解
2018/10/12 NodeJs
a标签调用js的方法总结
2019/09/05 Javascript
不刷新网页就能链接新的js文件方法总结
2020/03/01 Javascript
vue3.0 上手体验
2020/09/21 Javascript
使用node-media-server搭建一个简易的流媒体服务器
2021/01/20 Javascript
[04:29]2016国际邀请赛中国区预选赛Ehome战队教练采访
2016/06/27 DOTA
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
Python实现字典依据value排序
2016/02/24 Python
python实现rsa加密实例详解
2017/07/19 Python
解决Python二维数组赋值问题
2019/11/28 Python
Python版中国省市经纬度
2020/02/11 Python
Django-migrate报错问题解决方案
2020/04/21 Python
Python中有几个关键字
2020/06/04 Python
Python基于tkinter canvas实现图片裁剪功能
2020/11/05 Python
英国豪华家具和家居用品购物网站:Teddy Beau
2020/10/12 全球购物
奥地利手表、香水、化妆品和珠宝购物网站:Brasty.at
2021/01/17 全球购物
一些Unix笔试题和面试题
2012/09/25 面试题
北京鼎普科技股份有限公司软件测试面试题
2012/04/07 面试题
商场促销活动方案
2014/02/08 职场文书
高级工程师英文求职信
2014/03/19 职场文书
2014年最新学校运动会广播稿
2014/09/17 职场文书
宾馆前台接待岗位职责
2015/04/02 职场文书
观看《筑梦中国》纪录片心得体会
2016/01/18 职场文书
干货干货!2019最新优秀创业计划书
2019/03/21 职场文书
缓存替换策略及应用(以Redis、InnoDB为例)
2021/07/25 Redis