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获取类中常量,属性,及方法列表的方法
Apr 09 PHP
php visitFile()遍历指定文件夹函数
Aug 21 PHP
DEDE采集大师官方留后门的删除办法
Jan 08 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
Jun 13 PHP
PHP实现的json类实例
Jul 28 PHP
PHP发送短信代码分享
Aug 11 PHP
浅谈PHP中foreach/in_array的使用
Nov 02 PHP
php文件上传的两种实现方法
Apr 04 PHP
PHP中常用的数组操作方法笔记整理
May 16 PHP
php进行ip地址掩码运算处理的方法
Jul 11 PHP
PHP等比例压缩图片的实例代码
Jul 26 PHP
php 提交表单 关闭layer弹窗iframe的实例讲解
Aug 20 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
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
php 读取文件乱码问题
2010/02/20 PHP
PHP设计模式 注册表模式
2012/02/05 PHP
解决CodeIgniter伪静态失效
2014/06/09 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
PHP实现的超长文本分页显示功能示例
2018/06/04 PHP
用js实现预览待上传的本地图片
2007/03/15 Javascript
jQuery EasyUI 中文API Button使用实例
2010/04/14 Javascript
validator验证控件使用代码
2010/11/23 Javascript
jQuery中replaceAll()方法用法实例
2015/01/16 Javascript
JQuery中clone方法复制节点
2015/05/18 Javascript
简介JavaScript中Math.cos()余弦方法的使用
2015/06/15 Javascript
详细分析使用AngularJS编程中提交表单的方式
2015/06/19 Javascript
jQuery zclip插件实现跨浏览器复制功能
2015/11/02 Javascript
JavaScript语言精粹经典实例(整理篇)
2016/06/07 Javascript
jQuery表单插件ajaxForm实例详解
2017/01/17 Javascript
Angular4如何自定义首屏的加载动画详解
2017/07/26 Javascript
bootstrap中的导航条实例代码详解
2019/05/20 Javascript
Vue全局loading及错误提示的思路与实现
2019/08/09 Javascript
[46:50]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python原始字符串(raw strings)用法实例
2014/10/13 Python
python实现登陆知乎获得个人收藏并保存为word文件
2015/03/16 Python
python删除某个字符
2018/03/19 Python
对matplotlib改变colorbar位置和方向的方法详解
2018/12/13 Python
Python实现二叉树的常见遍历操作总结【7种方法】
2019/03/06 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
2020/02/28 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
2020/04/22 Python
python使用ctypes库调用DLL动态链接库
2020/10/22 Python
美国最大网上鞋店:Zappos
2016/07/25 全球购物
字符串str除首尾字符外的其他字符按升序排列
2013/03/08 面试题
测量实习生自我鉴定
2013/09/19 职场文书
2014年煤矿工作总结
2014/11/24 职场文书
2016年度师德标兵先进事迹材料
2016/02/26 职场文书
六年级作文之自救
2019/12/19 职场文书
宫崎骏十大动画电影,宫崎骏好看的动画电影排名
2022/03/22 日漫
Python中的嵌套循环详情
2022/03/23 Python