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 相关文章推荐
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
Jun 11 PHP
PHP原理之异常机制深入分析
Aug 08 PHP
整理的9个实用的PHP库简介和下载
Nov 09 PHP
PHP分页函数代码(简单实用型)
Dec 02 PHP
php实现无限级分类实现代码(递归方法)
Jan 01 PHP
php自动给文章加关键词链接的函数代码
Nov 29 PHP
php批量上传的实现代码
Jun 09 PHP
PHP中把数据库查询结果输出为json格式简单实例
Apr 09 PHP
PHP is_array() 检测变量是否是数组的实现方法
Jun 13 PHP
分析PHP中单双引号的误区和双引号小隐患
Jul 19 PHP
PHP的cookie与session原理及用法详解
Sep 27 PHP
PHP对接阿里云虚拟号的实现(号码隐私保护)
Apr 06 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 Session 变量的使用方法详解与实例代码
2013/09/11 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
2014/08/08 PHP
php常量详细解析
2015/10/27 PHP
Thinkphp微信公众号支付接口
2016/08/04 PHP
phpStudy 2016 使用教程详解(支持PHP7)
2017/10/18 PHP
MooTools 页面滚动浮动层智能定位实现代码
2011/08/23 Javascript
jquery ajax 同步异步的执行 return值不能取得的解决方案
2012/01/08 Javascript
js操纵跨frame的三级联动select下拉选项实例介绍
2013/05/19 Javascript
jquery为页面增加快捷键示例
2014/01/31 Javascript
使用js Math.random()函数生成n到m间的随机数字
2014/10/09 Javascript
jQuery中clone()方法用法实例
2015/01/16 Javascript
js实现格式化金额,字符,时间的方法
2015/02/26 Javascript
jQuery实现输入框下拉列表树插件特效代码分享
2015/08/27 Javascript
JS检测window.open打开的窗口是否关闭
2017/06/25 Javascript
详解JavaScript 浮点数运算的精度问题
2019/07/23 Javascript
js实现点击烟花特效
2020/10/14 Javascript
[52:02]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第一场 11.27
2020/11/30 DOTA
python数据结构树和二叉树简介
2014/04/29 Python
Python和perl实现批量对目录下电子书文件重命名的代码分享
2014/11/21 Python
Python实现识别手写数字 Python图片读入与处理
2020/03/23 Python
对Python中plt的画图函数详解
2018/11/07 Python
详解Appium+Python之生成html测试报告
2019/01/04 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
2019/03/18 Python
Python中的 is 和 == 以及字符串驻留机制详解
2019/06/28 Python
python实现知乎高颜值图片爬取
2019/08/12 Python
css3 按钮样式简单可扩展创建
2013/03/18 HTML / CSS
html5 datalist标签使用示例(自动完成组件)
2014/05/04 HTML / CSS
canvas需要在标签里直接定义宽高
2014/12/17 HTML / CSS
欧铁通票官方在线销售网站:Eurail.com
2017/10/14 全球购物
美国最大的香水出口:FragranceX.com
2017/11/04 全球购物
高中生毕业自我鉴定
2013/10/10 职场文书
结婚典礼证婚词
2014/01/11 职场文书
机电系毕业生求职信
2014/07/11 职场文书
被委托人身份证明
2015/08/07 职场文书
驾驶员安全责任协议书
2016/03/22 职场文书
Mysql中存储引擎的区别及比较
2021/06/04 MySQL