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


Posted in PHP onApril 27, 2020

本文实例讲述了Thinkphp 框架扩展之应用模式实现方法。分享给大家供大家参考,具体如下:

应用模式

应用模式是你的生活环境 开发环境 执行环境 ,就好比一个框架的应用场景(模式),是指这个框架在哪个平台上运行,

thinkphp中SAE、普通、API三种模式,

  • 普通是指用于普通WEB开发和运行方式,
  • API是指用作API请求服务端,大多为别的客户端进行服务,供远程调用
  • SAE是指在新浪的SAE平台上用的

不同的模式下配置都是不一样的

应用模式提供了对核心框架进行改造的机会,可以让你的应用适应更多的环境和不同的要求。

每个应用模式有自己的模式定义文件,用于配置当前模式需要加载的核心文件和配置文件,以及别名定义、行为扩展定义等等。根据模式定义文件的定义位置和入口是否需要定义模式,可以分为显式应用模式和隐含应用模式。

显式应用模式

显式应用模式的模式定义文件位于ThinkPHP\Mode目录,如果我们要增加一个应用模式,只需要在该目录下面定义一个模式定义文件即可,下面是一个典型的模式定义文件(lite.php):

return array(
  // 配置文件
  'config'  => array(
    THINK_PATH.'Conf/convention.php',  // 系统惯例配置
    CONF_PATH.'config.php',   // 应用公共配置
  ),
 
  // 别名定义
  'alias'   => array(
    'Think\Exception'     => CORE_PATH . 'Exception'.EXT,
    'Think\Model'       => CORE_PATH . 'Model'.EXT,
    'Think\Db'        => CORE_PATH . 'Db'.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(
    MODE_PATH.'Lite/functions.php',
    COMMON_PATH.'Common/function.php',
    MODE_PATH . 'Lite/App'.EXT,
    MODE_PATH . 'Lite/Dispatcher'.EXT,
    MODE_PATH . 'Lite/Controller'.EXT,
    MODE_PATH . 'Lite/View'.EXT,
    CORE_PATH . 'Behavior'.EXT,
  ),
  // 行为扩展定义
  'tags' => array(
    'view_parse'  => array(
      'Behavior\ParseTemplate', // 模板解析 支持PHP、内置模板引擎和第三方模板引擎
    ),
    'template_filter'=> array(
      'Behavior\ContentReplace', // 模板输出替换
    ),
  ),
);

我们在ThinkPHP/Mode/Lite目录下面创建functions.php函数库文件,以及App.class.phpDispatcher.class.phpController.class.phpView.class.php,这些类都是针对我们新的应用模式定制的核心类,但是和标准模式的命名空间是一致的,也就是说都在Think命名空间下面。

ThinkPHP/Mode/Lite目录用于存放该应用模式下面的所有自定义文件。

应用模式定义文件定义好后,我们就可以在应用中使用该模式了,例如:

define('MODE_NAME','lite');
define('APP_PATH','./Application/');
require './ThinkPHP/ThinkPHP.php';

隐含应用模式

隐含应用模式的模式定义文件位于应用的配置目录下面 Application/Common/Conf/core.php,模式定义文件和显式应用模式的定义文件一样。 使用隐含应用模式的时候,不需要在入口文件中定义MODE_NAME,或者说存在隐含应用模式定义文件的时候,MODE_NAME定义无效。

注意:如果应用中定义的应用模式需要使用其他的存储类型,需要在入口文件中定义。

define('STORAGE_TYPE','Bae');

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

PHP 相关文章推荐
php MsSql server时遇到的中文编码问题
Jun 11 PHP
php中getservbyport与getservbyname函数用法实例
Nov 18 PHP
php实现上传图片保存到数据库的方法
Feb 11 PHP
微信API接口大全
Apr 15 PHP
四个常见html网页乱码问题及解决办法
Sep 08 PHP
PHP正则表达式入门教程(推荐)
May 18 PHP
php版微信公众平台接口开发之智能回复开发教程
Sep 22 PHP
PHP XML和数组互相转换详解
Oct 26 PHP
详解Yii2 rules 的验证规则
Dec 02 PHP
yii2利用自带UploadedFile实现上传图片的示例
Feb 16 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
Apr 10 PHP
laravel框架select2多选插件初始化默认选中项操作示例
Feb 18 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
Yii Framework框架开发微信公众平台示例
Apr 26 #PHP
You might like
PHP 加密与解密的斗争
2009/04/17 PHP
基于empty函数的判断详解
2013/06/17 PHP
php格式化时间戳
2016/12/17 PHP
利用PHP_XLSXWriter代替PHPExcel的方法示例
2017/07/16 PHP
phpStudy 2016 使用教程详解(支持PHP7)
2017/10/18 PHP
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
汉化英文版的Dreamweaver CS5并自动提示jquery
2010/11/25 Javascript
jquery miniui 教程 表格控件 合并单元格应用
2012/11/25 Javascript
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
js触发select onchange事件的小技巧
2014/08/05 Javascript
JavaScript中的console.profile()函数详细介绍
2014/12/29 Javascript
KnockoutJS 3.X API 第四章之数据控制流component绑定
2016/10/10 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
2016/12/01 Javascript
jQuery ajax的功能实现方法详解
2017/01/06 Javascript
VUE实现日历组件功能
2017/03/13 Javascript
微信小程序实现带刻度尺滑块功能
2017/03/29 Javascript
webpack4 SplitChunks实现代码分隔详解
2019/05/23 Javascript
微信小程序scroll-view的滚动条设置实现
2020/03/02 Javascript
[53:29]完美世界DOTA2联赛循环赛 DM vs Matador BO2第二场 11.04
2020/11/05 DOTA
跟老齐学Python之Python安装
2014/09/12 Python
理解Python中的绝对路径和相对路径
2017/08/30 Python
python不换行之end=与逗号的意思及用途
2017/11/21 Python
Python中.join()和os.path.join()两个函数的用法详解
2018/06/11 Python
使用python判断你是青少年还是老年人
2018/11/29 Python
Python装饰器基础概念与用法详解
2018/12/22 Python
Python Datetime模块和Calendar模块用法实例分析
2019/04/15 Python
opencv 获取rtsp流媒体视频的实现方法
2019/08/23 Python
python 实现将Numpy数组保存为图像
2020/01/09 Python
python 函数嵌套及多函数共同运行知识点讲解
2020/03/03 Python
Python用类实现扑克牌发牌的示例代码
2020/06/01 Python
突袭HTML5之Javascript API扩展4—拖拽(Drag/Drop)概述
2013/01/31 HTML / CSS
通信工程求职信
2014/07/16 职场文书
国庆节活动总结
2014/08/26 职场文书
2014年四风问题个人对照自查剖析材料
2014/09/15 职场文书
历史博物馆观后感
2015/06/05 职场文书
基层工作经历证明
2015/06/19 职场文书