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 相关文章推荐
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
Jul 09 PHP
教你如何把一篇文章按要求分段
Oct 09 PHP
PHP COOKIE设置为浏览器进程
Jun 21 PHP
php radio 单选框获取与保持值的实现代码
May 15 PHP
php下使用strpos需要注意 === 运算符
Jul 17 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
Jul 02 PHP
PHP中计算字符串相似度的函数代码
Dec 29 PHP
解析php中两种缩放图片的函数,为图片添加水印
Jun 14 PHP
PHP字符串的连接的简单实例
Dec 30 PHP
Yii中CGridView实现批量删除的方法
Dec 28 PHP
手把手编写PHP框架 深入了解MVC运行流程
Sep 19 PHP
PHP自定义函数实现数组比较功能示例
Oct 19 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无限分类的类
2007/01/02 PHP
设置下载不需要倒计时cookie(倒计时代码)
2008/11/19 Javascript
javascript 贪吃蛇实现代码
2008/11/22 Javascript
用jquery存取照片的具体实现方法
2013/06/30 Javascript
JavaScript取得WEB安全颜色列表的方法
2015/07/14 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
基于canvas实现的钟摆效果完整实例
2016/01/26 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
2016/05/24 Javascript
Extjs让combobox写起来简洁又漂亮
2017/01/05 Javascript
AngularJS ui-router (嵌套路由)实例
2017/03/10 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
2017/06/28 Javascript
JavaScript实现获取select下拉框中第一个值的方法
2018/02/06 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
2020/10/09 jQuery
[50:59]2018DOTA2亚洲邀请赛 4.7 总决赛 LGD vs Mineski第四场
2018/04/10 DOTA
Python中分数的相关使用教程
2015/03/30 Python
更改Ubuntu默认python版本的两种方法python-> Anaconda
2016/12/18 Python
python版微信跳一跳游戏辅助
2018/01/11 Python
python3.5+tesseract+adb实现西瓜视频或头脑王者辅助答题
2018/01/17 Python
Ubuntu下使用python读取doc和docx文档的内容方法
2018/05/08 Python
对python添加模块路径的三种方法总结
2018/10/16 Python
python存储16bit和32bit图像的实例
2018/12/05 Python
python实现移位加密和解密
2019/03/22 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
2019/06/21 Python
python实现中文文本分句的例子
2019/07/15 Python
Django发送邮件和itsdangerous模块的配合使用解析
2019/08/10 Python
python中wheel的用法整理
2020/06/15 Python
Selenium 配置启动项参数的方法
2020/12/04 Python
Hotels.com印度:酒店预订
2019/05/11 全球购物
2013的个人自我评价
2013/12/26 职场文书
学习十八届三中全会精神实施方案
2014/02/17 职场文书
《开国大典》教学反思
2014/04/19 职场文书
仓管员岗位职责
2015/02/03 职场文书
限期整改通知书
2015/04/22 职场文书
2016年党员干部公开承诺书
2016/03/24 职场文书
一文搞懂MySQL索引页结构
2022/02/28 MySQL
服务器nginx权限被拒绝解决案例
2022/09/23 Servers