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实现维护文件代码
Jun 14 PHP
php中文字符截取防乱码
Mar 28 PHP
谷歌音乐搜索栏的提示功能php修正代码
May 09 PHP
PHP 字符串长度判断效率更高的方法
Mar 02 PHP
PHP实现取得HTTP请求的原文
Aug 18 PHP
PHP PDO fetch 模式各种参数的输出结果一览
Jan 07 PHP
使用ltrace工具跟踪PHP库函数调用的方法
Apr 25 PHP
Smarty保留变量用法分析
May 23 PHP
php面向对象之反射功能与用法分析
Mar 29 PHP
php将html转为图片的实现方法
May 19 PHP
如何解决PHP获取不到SESSION信息之一般情况
Oct 10 PHP
laravel数据库查询结果自动转数组修改实例
Feb 27 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实现的单一入口应用程序实例分析
2015/09/23 PHP
PHP 数组基本操作方法详解
2016/06/17 PHP
Yii2实现同时搜索多个字段的方法
2016/08/10 PHP
PHP设计模式之抽象工厂模式实例分析
2019/03/25 PHP
Prototype最新版(1.5 rc2)使用指南(1)
2007/01/10 Javascript
使用基于jquery的gamequery插件做JS乒乓球游戏
2011/07/31 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
批量修改标签css样式以input标签为例
2014/07/31 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
jquery实现的淡入淡出下拉菜单效果
2015/08/25 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
2016/10/14 Javascript
Angualrjs和bootstrap相结合实现数据表格table
2017/03/30 Javascript
浅谈 vue 中的 watcher
2017/12/04 Javascript
vue this.reload 方法 配置
2018/09/12 Javascript
python使用smtplib模块通过gmail实现邮件发送的方法
2015/05/08 Python
Python程序中用csv模块来操作csv文件的基本使用教程
2016/03/03 Python
Python程序中的观察者模式结构编写示例
2016/05/27 Python
python生成词云的实现方法(推荐)
2017/06/13 Python
Python WXPY实现微信监控报警功能的代码
2017/10/20 Python
对python requests的content和text方法的区别详解
2018/10/11 Python
python+mysql实现个人论文管理系统
2019/10/25 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
Python文本文件的合并操作方法代码实例
2020/03/31 Python
Windows下Sqlmap环境安装教程详解
2020/08/04 Python
Python 按比例获取样本数据或执行任务的实现代码
2020/12/03 Python
css3实现小箭头各种图形效果
2020/07/08 HTML / CSS
经济实惠的豪华家具:My-Furniture
2019/03/12 全球购物
Ariat官网:美国马靴和服装品牌
2019/12/16 全球购物
师范生自荐信范文
2013/10/06 职场文书
春节请假条
2014/04/11 职场文书
2015新年联欢晚会开场白
2014/12/14 职场文书
见义勇为事迹材料
2014/12/24 职场文书
现实表现证明材料
2015/06/19 职场文书
美容院员工规章制度
2015/08/05 职场文书
大学生志愿者心得体会
2016/01/15 职场文书
Python OpenCV实现图形检测示例详解
2022/04/08 Python