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批量删除数据
Jan 18 PHP
php 上传功能实例代码
Apr 13 PHP
php异常处理技术,顶级异常处理器
Jun 13 PHP
强制PHP命令行脚本单进程运行的方法
Apr 15 PHP
对PHP依赖注入的理解实例分析
Oct 09 PHP
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
Feb 08 PHP
PHP获取路径和目录的方法总结【必看篇】
Mar 04 PHP
Yii2中简单的场景使用介绍
Jun 02 PHP
总结一些PHP中好用但又容易忽略的小知识
Jun 02 PHP
PHP实现的一致性Hash算法详解【分布式算法】
Mar 31 PHP
php往mysql中批量插入数据实例教程
Dec 12 PHP
关于laravel 日志写入失败问题汇总
Oct 17 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
Syphon 虹吸式咖啡壶冲煮–拨动法
2021/03/03 冲泡冲煮
理解php原理的opcodes(操作码)
2010/10/26 PHP
PHP APC配置文件2套和参数详解
2014/06/11 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
2014/11/18 PHP
PHP将Excel导入数据库及数据库数据导出至Excel的方法
2015/06/24 PHP
PHP编程求最大公约数与最小公倍数的方法示例
2017/05/29 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
2020/02/07 PHP
Laravel5.3+框架定义API路径取消CSRF保护方法详解
2020/04/06 PHP
JavaScript的面向对象(一)
2006/11/09 Javascript
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
JavaScript学习笔记之基础语法
2015/01/22 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
基于BootStrap Metronic开发框架经验小结【九】实现Web页面内容的打印预览和保存操作
2016/05/12 Javascript
JavaScript函数柯里化原理与用法分析
2017/03/31 Javascript
手写简单的jQuery雪花飘落效果实例
2018/04/22 jQuery
JS实现横向轮播图(中级版)
2020/01/18 Javascript
Vue如何基于vue-i18n实现多国语言兼容
2020/07/17 Javascript
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
JavaScript实现缓动动画
2020/11/25 Javascript
[04:17]DOTA2完美盛典,rOtk、BurNIng携手巴图演唱《倔强》
2017/11/28 DOTA
python中实现将多个print输出合成一个数组
2018/04/19 Python
python3+PyQt5实现自定义窗口部件Counters
2018/04/20 Python
使用pyqt5 tablewidget 单元格设置正则表达式
2019/12/13 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
2020/04/27 Python
Python如何定义有可选参数的元类
2020/07/31 Python
Hotels.com爱尔兰:全球酒店预订
2017/02/24 全球购物
Vans澳大利亚官网:购买鞋子、服装及配件
2019/09/05 全球购物
环境工程专业个人求职信
2013/12/05 职场文书
新学期开学寄语
2014/01/18 职场文书
活动邀请函范文
2014/01/19 职场文书
办公室员工岗位工作职责
2014/03/10 职场文书
司法廉洁教育心得体会
2016/01/20 职场文书
《围炉夜话》110句人生箴言,精辟有内涵,引人深思
2019/10/23 职场文书
5行Python代码实现一键批量扣图
2021/06/29 Python
Python Django项目和应用的创建详解
2021/11/27 Python
Vue组件更新数据v-model不生效的解决
2022/04/02 Vue.js