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 socket方式提交的post详解
Jul 19 PHP
php Rename 更改文件、文件夹名称
May 24 PHP
PHP 使用MySQL管理Session的回调函数详解
Jun 21 PHP
php+mysql删除指定编号员工信息的方法
Jan 14 PHP
php从给定url获取文件扩展名的方法
Mar 14 PHP
php 问卷调查结果统计
Oct 08 PHP
thinkPHP5.0框架URL访问方法详解
Mar 18 PHP
yii框架无限极分类的实现方法
Apr 08 PHP
ThinkPHP中create()方法自动验证实例
Apr 26 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
Feb 15 PHP
PHP+MySQL实现在线测试答题实例
Jan 02 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
Feb 27 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的一个基础知识 表单提交
2011/07/04 PHP
php创建多级目录的方法
2015/03/24 PHP
php实现概率性随机抽奖代码
2016/01/02 PHP
getElementById在任意一款浏览器中都可以用吗的疑问回复
2007/05/13 Javascript
JQuery 表单中textarea字数限制实现代码
2009/12/07 Javascript
javascript中IE浏览器不支持NEW DATE()带参数的解决方法
2012/03/01 Javascript
js去除重复字符串两种实现方法
2013/01/09 Javascript
jQuery中多个元素的Hover事件解决方案
2014/06/12 Javascript
jQuery实现高亮显示网页关键词的方法
2015/08/07 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
Vue.js双向绑定操作技巧(初级入门)
2016/12/27 Javascript
微信小程序 slider 详解及实例代码
2017/01/10 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
Vue Socket.io源码解读
2018/02/07 Javascript
layui table设置前台过滤转义等方法
2018/08/17 Javascript
vue-cli的工程模板与构建工具详解
2018/09/27 Javascript
微信小程序之swiper滑动面板用法示例
2018/12/04 Javascript
Nodejs模块的调用操作实例分析
2018/12/25 NodeJs
微信小程序数据统计和错误统计的实现方法
2019/06/26 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
2019/07/12 Javascript
uniapp与webview之间的相互传值的实现
2020/06/29 Javascript
javascript实现雪花飘落效果
2020/08/19 Javascript
Python模块future用法原理详解
2020/01/20 Python
利用Python函数实现一个万历表完整示例
2021/01/23 Python
Ryderwear美国官网:澳大利亚高端健身训练装备品牌
2018/04/24 全球购物
德国在线订购鲜花:Fleurop
2018/08/25 全球购物
What is view? why do we have view?
2012/06/22 面试题
可口可乐广告词
2014/03/20 职场文书
大学生社会实践方案
2014/05/11 职场文书
日语专业求职信
2014/07/04 职场文书
大学第二课堂活动总结
2014/07/08 职场文书
2015元旦联欢晚会结束语
2014/12/14 职场文书
为什么中国式养孩子很累?
2019/08/07 职场文书
Flask搭建一个API服务器的步骤
2021/05/28 Python
Vue中foreach数组与js中遍历数组的写法说明
2021/06/05 Vue.js
CSS三大特性继承性、层叠性和优先级详解
2022/01/18 HTML / CSS