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中的一个中文字符串截取函数
Feb 14 PHP
数据库查询记录php 多行多列显示
Aug 15 PHP
php面向对象全攻略 (十四) php5接口技术
Sep 30 PHP
php 显示指定路径下的图片
Oct 29 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
Apr 24 PHP
php实现的替换敏感字符串类实例
Sep 22 PHP
php中ob_get_length缓冲与获取缓冲长度实例
Nov 20 PHP
Laravel中间件实现原理详解
Oct 09 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
Jul 19 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
Thinkphp5.0 框架Model模型简单用法分析
Oct 11 PHP
laravel框架实现去掉URL中index.php的方法
Oct 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
thinkphp模板的包含与渲染实例分析
2014/11/26 PHP
深入浅析php json 格式控制
2015/12/24 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
jquery实现网站超链接和图片提示效果
2013/03/21 Javascript
你必须知道的Javascript知识点之"this指针"的应用
2013/04/23 Javascript
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
2013/08/28 Javascript
js编写trim()函数及正则表达式的运用
2013/10/24 Javascript
javascript生成json数据简单示例分享
2014/02/14 Javascript
验证码在IE中不刷新而谷歌等浏览器正常的解决方案
2014/03/18 Javascript
javascript实现博客园页面右下角返回顶部按钮
2015/02/22 Javascript
详解JavaScript的Polymer框架中的通知交互
2015/07/29 Javascript
iframe跨域通信封装详解
2015/08/11 Javascript
Bootstrap零基础入门教程(三)
2016/07/18 Javascript
jquery.validate表单验证插件使用方法解析
2016/11/07 Javascript
Bootstrap输入框组件简单实现代码
2017/03/06 Javascript
详解angular笔记路由之angular-router
2017/09/12 Javascript
vue-router3.0版本中 router.push 不能刷新页面的问题
2018/05/10 Javascript
详解TypeScript+Vue 插件 vue-class-component的使用总结
2019/02/18 Javascript
jQuery轮播图功能制作方法详解
2019/12/03 jQuery
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
python的文件操作方法汇总
2017/11/10 Python
python实现list由于numpy array的转换
2018/04/04 Python
python requests 测试代理ip是否生效
2018/07/25 Python
Python中psutil的介绍与用法
2019/05/02 Python
pandas read_excel()和to_excel()函数解析
2019/09/19 Python
jupyter notebook运行命令显示[*](解决办法)
2020/05/18 Python
美国便宜的横幅和标志印刷在线:Best of Signs
2019/05/29 全球购物
台湾全方位线上课程与职能学习平台:TibaMe
2019/12/04 全球购物
《走一步再走一步》教学反思
2014/02/15 职场文书
投标授权委托书范文
2014/08/02 职场文书
踏青活动策划方案
2014/08/19 职场文书
市场调研项目授权委托书范本
2014/10/04 职场文书
任命通知范文
2015/04/21 职场文书
《称赞》教学反思
2016/02/17 职场文书
诉讼和解协议书
2016/03/23 职场文书
dubbo集成zipkin获取Traceid的实现
2021/07/26 Java/Android