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 日期时间函数的高级应用技巧
Oct 10 PHP
PHP MYSQL乱码问题,使用SET NAMES utf8校正
Nov 30 PHP
PHP中基本符号及使用方法
Mar 23 PHP
PHP处理excel cvs表格的方法实例介绍
May 13 PHP
一个PHP的ZIP压缩类分享
May 04 PHP
php新浪微博登录接口用法实例
Dec 23 PHP
php生成图片验证码-附五种验证码
Aug 19 PHP
详解php 使用Callable Closure强制指定回调类型
Oct 26 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
Feb 07 PHP
php探针使用原理和技巧讲解
Sep 17 PHP
Laravel 错误提示本地化的实现
Oct 22 PHP
php7 错误处理机制修改实例分析
May 25 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
解析strtr函数的效率问题
2013/06/26 PHP
浅谈php命令行用法
2015/02/04 PHP
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
PHP如何实现订单的延时处理详解
2017/12/30 PHP
PHP单元测试框架PHPUnit用法详解
2019/01/23 PHP
表单提交验证类
2006/07/14 Javascript
URL地址中的#符号使用说明
2011/02/12 Javascript
利用浏览器全屏api实现js全屏
2014/01/16 Javascript
判断及设置浏览器全屏模式
2014/04/20 Javascript
javascript中expression的用法整理
2014/05/13 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
javascript下使用Promise封装FileReader
2016/02/19 Javascript
jQuery Validate 校验多个相同name的方法
2017/05/18 jQuery
微信小程序实现移动端滑动分页效果(ajax)
2017/06/13 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
使用JavaScript计算前一天和后一天的思路详解
2019/12/20 Javascript
javascript事件循环event loop的简单模型解释与应用分析
2020/03/14 Javascript
Python入门_条件控制(详解)
2017/05/16 Python
Python基于高斯消元法计算线性方程组示例
2018/01/17 Python
python查看列的唯一值方法
2018/07/17 Python
Python使用百度api做人脸对比的方法
2019/08/28 Python
Python正则表达式急速入门(小结)
2019/12/16 Python
python 实现 hive中类似 lateral view explode的功能示例
2020/05/18 Python
selenium自动化测试入门实战
2020/12/21 Python
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
2012/12/09 HTML / CSS
Europcar意大利:汽车租赁
2019/07/07 全球购物
《一个中国孩子的呼声》教学反思
2014/02/12 职场文书
学生意外伤害赔偿协议书
2014/09/17 职场文书
党的群众路线教育实践活动调研报告
2014/11/03 职场文书
学会感恩主题班会
2015/08/12 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书
深入浅析Redis 集群伸缩原理
2021/05/15 Redis
动画电影《龙珠超 超级英雄》延期上映
2022/03/20 日漫
vue中data里面的数据相互使用方式
2022/06/05 Vue.js