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 相关文章推荐
提取HTML标签
Oct 09 PHP
php的控制语句
Oct 09 PHP
在项目中寻找代码的坏命名
Jul 14 PHP
php excel reader读取excel内容存入数据库实现代码
Dec 06 PHP
深入理解php的MySQL连接类
Jun 07 PHP
php根据分类合并数组的方法实例详解
Nov 06 PHP
PHP调用C#开发的dll类库方法
Jul 28 PHP
php实现设计模式中的单例模式详解
Oct 11 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
Dec 30 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
Mar 21 PHP
Yii框架实现记录日志到自定义文件的方法
May 23 PHP
php安装扩展mysqli的实现步骤及报错解决办法
Sep 23 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
重置版宣传动画
2020/04/09 魔兽争霸
什么情况下可以不写PHP的闭合标签“?>”
2014/08/28 PHP
php微信公众号开发模式详解
2016/11/28 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
关于实现代码语法标亮 dp.SyntaxHighlighter
2007/02/02 Javascript
Jquery作者John Resig自己封装的javascript 常用函数
2009/11/09 Javascript
基于javascipt-dom编程 table对象的使用
2013/04/22 Javascript
ext combobox动态加载数据库数据(附前后台)
2014/06/17 Javascript
使用jQuery实现input数值增量和减量的方法
2015/01/24 Javascript
Node.js 学习笔记之简介、安装及配置
2015/03/03 Javascript
jquery验证邮箱格式是否正确实例讲解
2015/11/16 Javascript
jQuery学习笔记——jqGrid的使用记录(实现分页、搜索功能)
2016/11/09 Javascript
详解vue.js之props传递参数
2017/12/12 Javascript
微信小程序上传图片功能(附后端代码)
2020/06/19 Javascript
Vue.js实现大屏数字滚动翻转效果
2019/11/29 Javascript
[02:37]2015国际邀请赛选手档案—LGD.Xiao8
2015/07/28 DOTA
[53:10]Secret vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[01:03:22]LGD vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
python subprocess 杀掉全部派生的子进程方法
2017/01/16 Python
Python语言生成水仙花数代码示例
2017/12/18 Python
python 文件查找及内容匹配方法
2018/10/25 Python
Python字符串格式化输出代码实例
2019/11/22 Python
对Tensorflow中Device实例的生成和管理详解
2020/02/04 Python
Python实现对adb命令封装
2020/03/06 Python
在keras里实现自定义上采样层
2020/06/28 Python
Python 里最强的地图绘制神器
2021/03/01 Python
利用CSS3实现毛玻璃效果示例源码
2016/09/25 HTML / CSS
美国一站式电动和手动工具商店:International Tool
2020/11/26 全球购物
MIS软件工程师的面试题
2016/04/22 面试题
会计专业应届生自荐信
2014/02/07 职场文书
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
市场营销策划方案
2014/06/11 职场文书
自动化专业毕业生求职信
2014/06/18 职场文书
2014年重阳节敬老活动方案
2014/09/16 职场文书
Win11如何设置右键单击显示所有选项?Win11右键单击显示所有选项设置教程
2022/04/08 数码科技
Windows Server 2022 超融合部署(图文教程)
2022/06/25 Servers