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 柱状图实现代码
Dec 04 PHP
Zend Studio (eclipse)使用速度优化方法
Mar 23 PHP
PHP中创建图像并绘制文字的例子
Nov 19 PHP
php定时执行任务设置详解
Feb 06 PHP
你应该知道PHP浮点数知识
May 13 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
Dec 16 PHP
PHP使用反射机制实现查找类和方法的所在位置
Apr 22 PHP
php下载文件,添加响应头的简单实例
Sep 22 PHP
php die()与exit()的区别实例详解
Dec 03 PHP
thinkphp5.0自定义验证规则使用方法
Nov 16 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
Feb 07 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
Apr 23 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
Zend Framework中的简单工厂模式 图文
2012/07/10 PHP
PHP 图片水印类代码
2012/08/27 PHP
php递归遍历删除文件的方法
2015/04/17 PHP
php getcwd与dirname(__FILE__)区别详解
2016/09/24 PHP
PHP中phar包的使用教程
2017/06/14 PHP
JavaScript 动态将数字金额转化为中文大写金额
2009/05/14 Javascript
Javascript和HTML5利用canvas构建Web五子棋游戏实现算法
2013/07/17 Javascript
javascript进行四舍五入方法汇总
2014/12/16 Javascript
使用DNode实现php和nodejs之间通信的简单实例
2015/07/06 NodeJs
JavaScript数据库TaffyDB用法实例分析
2015/07/27 Javascript
js实现带缓冲效果的仿QQ面板折叠菜单代码
2015/09/06 Javascript
javascript实现保留两位小数的多种方法
2015/12/18 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
2016/11/13 Javascript
JS限定手机版中图片大小随分辨率自动调整的方法
2016/12/05 Javascript
Vue 2中ref属性的使用方法及注意事项
2017/06/12 Javascript
微信小程序-滚动消息通知的实例代码
2017/08/03 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
vue3.0 CLI - 3.2 路由的初级使用教程
2018/09/20 Javascript
微信小程序实现列表页的点赞和取消点赞功能
2018/11/02 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
2019/06/03 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
2019/08/07 Javascript
[07:57]2018DOTA2国际邀请赛寻真——PSG.LGD凤凰浴火
2018/08/12 DOTA
[41:05]Serenity vs Pain 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python使用新浪微博API发送微博的例子
2014/04/10 Python
python中的计时器timeit的使用方法
2017/10/20 Python
Windows上使用Python增加或删除权限的方法
2018/04/24 Python
python如何将两个txt文件内容合并
2019/10/18 Python
html5 分层屏幕适配的方法
2018/03/16 HTML / CSS
HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例
2015/04/24 HTML / CSS
欧洲最大的球衣网上商店:Kitbag
2017/11/11 全球购物
甲方资料员岗位职责
2013/12/13 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
客户经理岗位职责
2015/01/31 职场文书
春季运动会加油词
2015/07/18 职场文书
CSS3 制作的悬停缩放特效
2021/04/13 HTML / CSS
sql时间段切分实现每隔x分钟出一份高速门架车流量
2022/02/28 SQL Server