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设计模式 Decorator(装饰模式)
Jun 26 PHP
解析PHP汉字转换拼音的类
Jun 18 PHP
编写Smarty插件在模板中直接加载数据的详细介绍
Jun 26 PHP
PHP 验证码不显示只有一个小红叉的解决方法
Sep 30 PHP
php操作mysqli(示例代码)
Oct 28 PHP
php构造函数的继承方法
Feb 09 PHP
php给图片加文字水印
Jul 31 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
Dec 02 PHP
PHP实现linux命令tail -f
Feb 22 PHP
详解PHP中array_rand函数的使用方法
Sep 11 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
Aug 28 PHP
浅谈PHP之ThinkPHP框架使用详解
Jul 21 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
Netflix将与CLAMP、乙一以及冲方丁等6名知名制作人合伙展开原创动画计划!
2020/03/06 日漫
建立动态的WML站点(二)
2006/10/09 PHP
PHP实现用户认证及管理完全源码
2007/03/11 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
2015/03/07 PHP
jQuery中$.fn的用法示例介绍
2013/11/05 Javascript
对于jQuery性能的一些优化建议
2015/08/13 Javascript
JavaScript+html5 canvas绘制渐变区域完整实例
2016/01/26 Javascript
论Bootstrap3和Foundation5网格系统的异同
2016/05/16 Javascript
jQuery层次选择器用法示例
2016/09/09 Javascript
AngularJS入门教程之过滤器用法示例
2016/11/02 Javascript
深入理解jQuery.data() 的实现方式
2016/11/30 Javascript
jQuery中ajax错误调试分析
2016/12/01 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
2016/12/22 Javascript
js实现前端分页页码管理
2017/01/06 Javascript
JavaScript日期对象(Date)基本用法示例
2017/01/18 Javascript
基于jQuery插件jqzoom实现的图片放大镜效果示例
2017/01/23 Javascript
微信小程序实战之登录页面制作(5)
2020/03/30 Javascript
jQuery常见面试题之DOM操作详析
2017/07/05 jQuery
微信小程序实现上拉加载功能
2019/11/20 Javascript
JavaScript获取当前url路径过程解析
2019/12/27 Javascript
python正则表达式判断字符串是否是全部小写示例
2013/12/25 Python
使用Python读取安卓手机的屏幕分辨率方法
2018/03/31 Python
python 求一个列表中所有元素的乘积实例
2019/06/11 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
Bootstrap 学习分享
2012/11/12 HTML / CSS
企业军训感想
2014/02/07 职场文书
事业单位绩效考核实施方案
2014/03/27 职场文书
销售员未完成销售业绩的检讨书
2014/10/12 职场文书
优秀党员先进事迹材料
2014/12/18 职场文书
行政申诉状范文
2015/05/20 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书
高中语文教材(文学文化常识大全一)
2019/08/13 职场文书
Pygame Rect区域位置的使用(图文)
2021/11/17 Python
mysql5.6主从搭建以及不同步问题详解
2021/12/04 MySQL
SQL注入详解及防范方法
2021/12/06 MySQL