首页 > 开发 > PHP > 正文

ThinkPHP应用模式扩展详解

2024-05-04 22:19:43
字体:
来源:转载
供稿:网友

ThinkPHP的应用模式使得开发人员对核心框架进行改造较以往更为得心应手,并且可以让你的应用适应更多的环境和不同的需求。每个应用模式都有自己的模式定义文件,相对于ThinkPHP3.1版本,ThinkPHP3.2版本对应用模式的扩展更加明确和清晰,在ThinkPHP3.1版本中定义了Cli、Lite、Thin、AMF、PHPRPC、REST模式,其定义方式和ThinkPHP3.2版本的方式大同小异,如有需要可以参考修改,其中Cli模式被ThinkPHP框架内置,不用单独定义Cli模式即可正常使用,如需要更细化调整可以参考3.1版编写的Cli运行模式扩展。ThinkPHP同样提供了便捷的开发环境和正式环境的模式切换方式。让我们随着ThinkPHP的运行流程解析其应用模式扩展之谜。

一、应用模式的使用

在研究应用模式扩展之前,看看如何使用应用模式的吧。一般通过在入口文件定义常量APP_MODE为应用模式名称,但是在分析ThinkPHP框架入口文件时,了解到框架默认采用模式为普通模式(common),而且可以自动识别sae环境,当然前提是没有定义APP_MODE常量时,当然ThinkPHP可以自动识别CLI和CGI模式,并且在CLI和CGI环境下运行ThinkPHP框架在默认模式中自动对这两种环境做了细微调整,当然也可以自己扩展这两种应用模式。

if(function_exists('saeAutoLoader')){// 自动识别SAE环境  defined('APP_MODE')   or define('APP_MODE',   'sae');  defined('STORAGE_TYPE') or define('STORAGE_TYPE', 'Sae');}else{  defined('APP_MODE')   or define('APP_MODE',    'common'); // 应用模式 默认为普通模式    defined('STORAGE_TYPE') or define('STORAGE_TYPE',  'File'); // 存储类型 默认为File  }

二、应用模式定义

在ThinkPHP框架当中除了ThinkPHP框架入口和框架引导类以外,基本所有其他功能都可以通过应用模式进行更改和扩展,如果我们要增加一个应用模式,只需要在ThinkPHP/Mode目录下面定义一个模式定义文件即可,我们可以通过分析common模式进行学习。该文件的代码如下:

//文件路径:ThinkPHP/Mode/common.php/** * ThinkPHP 普通模式定义 * 定义一个模式文件,只需要返回一个模式包含文件的数组即可 * 在数组中主要包含4种扩展文件列表: *   config 为默认加载配置文件列表 *   alias 为核心类库别名配置列表 *   core 需要加载的核心函数和类文件列表 *   tags 行为配置列表 * * 如果在应用模式定义中加载一个自定类,那个自定义类的命名空间必须是Think */return array(  // 配置文件  'config'  => array(    THINK_PATH.'Conf/convention.php',  // 系统惯例配置    CONF_PATH.'config.php',   // 应用公共配置  ),   // 别名定义  'alias'   => array(    'Think/Log'        => CORE_PATH . 'Log'.EXT,    'Think/Log/Driver/File'  => CORE_PATH . 'Log/Driver/File'.EXT,    'Think/Exception'     => CORE_PATH . 'Exception'.EXT,    'Think/Model'       => CORE_PATH . 'Model'.EXT,    'Think/Db'        => CORE_PATH . 'Db'.EXT,    'Think/Template'     => CORE_PATH . 'Template'.EXT,    'Think/Cache'       => CORE_PATH . 'Cache'.EXT,    'Think/Cache/Driver/File' => CORE_PATH . 'Cache/Driver/File'.EXT,    'Think/Storage'      => CORE_PATH . 'Storage'.EXT,  ),   // 函数和类文件  'core'   => array(    THINK_PATH.'Common/functions.php',    COMMON_PATH.'Common/function.php',    CORE_PATH . 'Hook'.EXT,    CORE_PATH . 'App'.EXT,    CORE_PATH . 'Dispatcher'.EXT,    //CORE_PATH . 'Log'.EXT,    CORE_PATH . 'Route'.EXT,    CORE_PATH . 'Controller'.EXT,    CORE_PATH . 'View'.EXT,    BEHAVIOR_PATH . 'BuildLiteBehavior'.EXT,    BEHAVIOR_PATH . 'ParseTemplateBehavior'.EXT,    BEHAVIOR_PATH . 'ContentReplaceBehavior'.EXT,  ),  // 行为扩展定义  'tags' => array(    'app_init'   => array(      'Behavior/BuildLiteBehavior', // 生成运行Lite文件    ),        'app_begin'   => array(      'Behavior/ReadHtmlCacheBehavior', // 读取静态缓存    ),    'app_end'    => array(      'Behavior/ShowPageTraceBehavior', // 页面Trace显示    ),    'view_parse'  => array(      'Behavior/ParseTemplateBehavior', // 模板解析 支持PHP、内置模板引擎和第三方模板引擎    ),    'template_filter'=> array(      'Behavior/ContentReplaceBehavior', // 模板输出替换    ),    'view_filter'  => array(      'Behavior/WriteHtmlCacheBehavior', // 写入静态缓存    ),  ),);            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表