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 相关文章推荐
Win9x/ME下Apache+PHP安装配置
Oct 09 PHP
一个取得文件扩展名的函数
Oct 09 PHP
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页
Oct 09 PHP
用windows下编译过的eAccelerator for PHP 5.1.6实现php加速的使用方法
Sep 30 PHP
PHP 巧用数组降低程序的时间复杂度
Jan 01 PHP
使用php统计字符串中中英文字符的个数
Jun 23 PHP
Linux下PHP安装mcrypt扩展模块笔记
Sep 10 PHP
深入理解PHP内核(一)
Nov 10 PHP
php版微信自动获取收货地址api用法示例
Sep 22 PHP
PHP最常用的正则表达式
Feb 13 PHP
PHP智能识别收货地址信息实例
Jan 05 PHP
php模拟post提交请求调用接口示例解析
Aug 07 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配置php-fpm启动参数及配置详解
2013/11/04 PHP
PHP获取文件相对路径的方法
2015/02/26 PHP
BOOM vs RR BO3 第一场2.13
2021/03/10 DOTA
IE下写xml文件的两种方式(fso/saveAs)
2013/08/05 Javascript
jQuery学习总结之jQuery事件
2014/06/30 Javascript
兼容主流浏览器的jQuery+CSS 实现遮罩层的简单代码
2014/10/14 Javascript
jQuery表单美化插件jqTransform使用详解
2015/04/12 Javascript
详解vue过滤器在v2.0版本用法
2017/06/01 Javascript
js自定义trim函数实现删除两端空格功能
2018/02/09 Javascript
JS实现的RC4加密算法示例
2018/08/16 Javascript
微信小程序使用setData修改数组中单个对象的方法分析
2018/12/30 Javascript
Vue自定义全局Toast和Loading的实例详解
2019/04/18 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
[03:49]DOTA2 2015国际邀请赛中国区预选赛第二日现场百态
2015/05/27 DOTA
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
python实现一行输入多个值和一行输出多个值的例子
2019/07/16 Python
python利用JMeter测试Tornado的多线程
2020/01/12 Python
Python GUI库PyQt5图形和特效样式QSS介绍
2020/02/25 Python
Python3标准库之threading进程中管理并发操作方法
2020/03/30 Python
django 实现手动存储文件到model的FileField
2020/03/30 Python
TensorFlow固化模型的实现操作
2020/05/26 Python
如何导出python安装的所有模块名称和版本号到文件中
2020/06/05 Python
Python 如何操作 SQLite 数据库
2020/08/17 Python
浅谈Html5多线程开发之WebWorkers
2018/05/02 HTML / CSS
浅析HTML5页面元素及属性
2021/01/20 HTML / CSS
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/09/18 面试题
环境科学专业优秀毕业生自荐书
2014/02/03 职场文书
物业管理专业自荐信
2014/07/01 职场文书
产品陈列协议书(标准版)
2014/09/17 职场文书
班主任2015新年寄语
2014/12/08 职场文书
收费员岗位职责
2015/02/14 职场文书
保卫工作个人总结
2015/03/03 职场文书
追悼词范文大全
2015/06/23 职场文书
防震减灾主题班会
2015/08/14 职场文书
如何理解及使用Python闭包
2021/06/01 Python
Java Spring Boot 正确读取配置文件中的属性的值
2022/04/20 Java/Android