Thinkphp 框架扩展之驱动扩展实例分析

本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

(0)

相关推荐

  • Thinkphp 框架扩展之Widget扩展实现方法分析

    本文实例讲述了Thinkphp 框架扩展之Widget扩展实现方法.分享给大家供大家参考,具体如下: Widget扩展 Widget扩展一般用于页面组件的扩展. 举个例子,我们在页面中实现一个分类显示的Widget,首先我们要定义一个Widget控制器层 CateWidget,如下: namespace Home\Widget; use Think\Controller; class CateWidget extends Controller { public function menu(){

  • Thinkphp 框架扩展之类库扩展操作详解

    本文实例讲述了Thinkphp 框架扩展之类库扩展操作.分享给大家供大家参考,具体如下: 类库扩展 ThinkPHP的类库主要包括公共类库和应用类库,都是基于命名空间进行定义和扩展的.只要按照规范定义,都可以实现自动加载. 公共类库 公共类库通常是指ThinkPHP/Library目录下面的类库,例如: Think目录:系统核心类库 Org目录:第三方公共类库 这些目录下面的类库都可以自动加载,你只要把相应的类库放入目录中,然后添加或者修改命名空间定义. 你可以在Org/Util/目录下面添加一

  • thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】

    本文讲述了thinkPHP5.0框架整体架构.分享给大家供大家参考,具体如下: ThinkPHP5.0应用基于MVC(模型-视图-控制器)的方式来组织. MVC是一个设计模式,它强制性的使应用程序的输入.处理和输出分开.使用MVC应用程序被分成三个核心部件:模型(M).视图(V).控制器(C),它们各自处理自己的任务. 5.0的URL访问受路由决定,如果关闭路由或者没有匹配路由的情况下,则是基于: http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作

  • ThinkPHP行为扩展Behavior应用实例详解

    本文以实例的形式详细介绍了ThinkPHP的行为扩展Behavior的实现方法,有助于读者更灵活的掌握ThinkPHP的开发,具体步骤如下: ThinkPHP 行为扩展 (Behavior) 流程: 最先是读取配置文件信息: $mode = include is_file(CONF_PATH.'core.php')?CONF_PATH.'core.php':MODE_PATH.APP_MODE.'.php'; 读取配置文件信息 ThinkPHP\Mode\common.php // 行为扩展定义

  • Thinkphp 框架扩展之数据库驱动常用方法小结

    本文实例讲述了Thinkphp 框架扩展之数据库驱动常用方法.分享给大家供大家参考,具体如下: 数据库驱动 默认的数据库驱动位于Think\Db\Driver命名空间下面,驱动类必须继承Think\Db类,每个数据库驱动必须要实现的接口方法包括(具体参数可以参考现有的数据库驱动类库): 驱动方法 方法说明 架构方法 __construct($config='') 数据库连接方法 connect($config='',$linkNum=0,$force=false) 释放查询方法 free() 查

  • ThinkPHP的Widget扩展实例

    ThinkPHP的Widget扩展用于根据页面需要输出不同内容,它在项目目录中的Lib/Widget下定义. 具体定义如下: class NewsListWidget extends Widget{ public function render($data){ // code... } } 需要注意: 1.Widget是一个抽象类,其中有一个抽象方法(abstract)render,必须在子类中实现: 2.Widget的render方法必须使用return返回,而不是直接输出: 3.$data是

  • ThinkPHP应用模式扩展详解

    ThinkPHP的应用模式使得开发人员对核心框架进行改造较以往更为得心应手,并且可以让你的应用适应更多的环境和不同的需求.每个应用模式都有自己的模式定义文件,相对于ThinkPHP3.1版本,ThinkPHP3.2版本对应用模式的扩展更加明确和清晰,在ThinkPHP3.1版本中定义了Cli.Lite.Thin.AMF.PHPRPC.REST模式,其定义方式和ThinkPHP3.2版本的方式大同小异,如有需要可以参考修改,其中Cli模式被ThinkPHP框架内置,不用单独定义Cli模式即可正常使

  • Thinkphp 框架扩展之行为扩展原理与实现方法分析

    本文实例讲述了Thinkphp 框架扩展之行为扩展原理与实现方法.分享给大家供大家参考,具体如下: 系统核心提供的标签位置包括下面几个(按照执行顺序排列): app_init 应用初始化标签位 path_info PATH_INFO检测标签位 app_begin 应用开始标签位 action_name 操作方法名标签位 action_begin 控制器开始标签位 view_begin 视图输出开始标签位 view_parse 视图解析标签位 template_filter 模板内容解析标签位 v

  • thinkphp框架类库扩展操作示例

    本文实例讲述了thinkphp框架类库扩展操作.分享给大家供大家参考,具体如下: 官方文档 http://document.thinkphp.cn/manual_3_2.html#lib_extend 自定义命名空间 在项目的application->common->conf文件下添加 'AUTOLOAD_NAMESPACE' => array( 'Lib' => APP_PATH . 'Home\Lib', ) Home\Lib 表示扩展路径在application->ho

  • Thinkphp 框架扩展之标签库驱动原理与用法分析

    本文实例讲述了Thinkphp 框架扩展之标签库驱动原理与用法.分享给大家供大家参考,具体如下: 在Think\Template中标签库的体现是采用XML命名空间的方式.每个标签库对应一个标签库驱动类,每个驱动类负责对标签库中的所有标签的解析. 标签库驱动类的作用其实就是把某个标签定义解析成为有效的模版文件(可以包括PHP语句或者HTML标签),标签库驱动的命名空间位于 Think\Template\TagLib,标签库驱动必须继承Think\Template\TagLib类,例如: names

  • Thinkphp 框架扩展之应用模式实现方法分析

    本文实例讲述了Thinkphp 框架扩展之应用模式实现方法.分享给大家供大家参考,具体如下: 应用模式 应用模式是你的生活环境 开发环境 执行环境 ,就好比一个框架的应用场景(模式),是指这个框架在哪个平台上运行, thinkphp中SAE.普通.API三种模式, 普通是指用于普通WEB开发和运行方式, API是指用作API请求服务端,大多为别的客户端进行服务,供远程调用 SAE是指在新浪的SAE平台上用的 不同的模式下配置都是不一样的 应用模式提供了对核心框架进行改造的机会,可以让你的应用适应

随机推荐