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生成便于打印的网页
Oct 09 PHP
php简单静态页生成过程
Mar 27 PHP
关于zend studio 出现乱码问题的总结
Jun 23 PHP
PHP中Header使用的HTTP协议及常用方法小结
Nov 04 PHP
非常实用的PHP常用函数汇总
Dec 17 PHP
php限制上传文件类型并保存上传文件的方法
Mar 13 PHP
使用纯php代码实现页面伪静态的方法
Jul 25 PHP
PHP中strpos、strstr和stripos、stristr函数分析
Jun 11 PHP
Yii视图CGridView实现操作按钮定义地址示例
Jul 14 PHP
总结PHP删除字符串最后一个字符的三种方法
Aug 30 PHP
php 变量引用与变量销毁机制详细介绍
Dec 05 PHP
PHP基于GD库实现的生成图片缩略图函数示例
Jul 05 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
Protoss魔法科技
2020/03/14 星际争霸
社区(php&&mysql)四
2006/10/09 PHP
PHP 递归效率分析
2009/11/24 PHP
PHP数组去重比较快的实现方式
2016/01/19 PHP
PHP数据源架构模式之表入口模式实例分析
2020/01/23 PHP
超级强大的表单验证
2006/06/26 Javascript
baidu博客的编辑友情链接的新的层窗口!经典~支持【FF】
2007/02/09 Javascript
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
javascript循环变量注册dom事件 之强大的闭包
2010/09/08 Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
offsetHeight在OnLoad中获取为0的现象
2013/07/22 Javascript
jQuery中RadioButtonList的功能及用法实例介绍
2013/08/23 Javascript
jQuery实现根据类型自动显示和隐藏表单
2015/03/18 Javascript
JavaScript实现节点的删除与序号重建实例
2015/08/05 Javascript
微信小程序 九宫格实例代码
2017/01/21 Javascript
vue中用H5实现文件上传的方法实例代码
2017/05/27 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
clipboard.js在移动端复制失败的解决方法
2018/06/13 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
深入理解Puppeteer的入门教程和实践
2019/03/05 Javascript
如何通过JS实现转码与解码
2020/02/21 Javascript
vue实现移动端H5数字键盘组件使用详解
2020/08/25 Javascript
[40:04]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
[48:46]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第二场 11.19
2020/11/19 DOTA
[32:30]夜魇凡尔赛茶话会 第一期01:谁是卧底
2021/03/11 DOTA
Python实现获取命令行输出结果的方法
2017/06/10 Python
Python基于pip实现离线打包过程详解
2020/05/15 Python
HTML5超文本标记语言的实现方法
2020/09/24 HTML / CSS
美国最大的珠宝首饰网上商城:Jewelry.com
2016/07/22 全球购物
JSP和EJB可以共享HttpSession么?EJB里面可以改变session里面的内容
2013/06/05 面试题
大学生职业生涯规划书前言
2014/01/09 职场文书
离婚协议书范本(2014版)
2014/09/28 职场文书
初中开学典礼新闻稿
2015/07/17 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书
原来闭幕词是这样写的呀!
2019/07/01 职场文书
写给医护人员的一封感谢信
2019/09/16 职场文书