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 相关文章推荐
php5 and xml示例
Nov 22 PHP
PHP添加MySQL数据记录代码
Jun 07 PHP
PHP ajax 分页类代码
Nov 13 PHP
php 获取可变函数参数的函数
Aug 26 PHP
ThinkPHP应用模式扩展详解
Jul 16 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
Mar 03 PHP
PHP如何将XML转成数组
Apr 04 PHP
php版微信公众号自定义分享内容实现方法
Sep 22 PHP
PHP基于SimpleXML生成和解析xml的方法示例
Jul 17 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
Jun 06 PHP
PHP的Trait机制原理与用法分析
Oct 18 PHP
如何在centos8自定义目录安装php7.3
Nov 28 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
BBS(php & mysql)完整版(二)
2006/10/09 PHP
PHP 变量类型的强制转换
2009/10/23 PHP
yii2中dropDownList实现二级和三级联动写法
2017/04/26 PHP
PHP中的函数声明与使用详解
2017/05/27 PHP
PHP多个图片压缩成ZIP的方法
2020/08/18 PHP
PHP封装的page分页类定义与用法完整示例
2018/12/24 PHP
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
jquery ui dialog里调用datepicker的问题
2009/08/06 Javascript
js中Image对象以及对其预加载处理示例
2013/11/20 Javascript
用javascript为页面添加天气显示实现思路及代码
2013/12/02 Javascript
JQuery处理json与ajax返回JSON实例代码
2014/01/03 Javascript
js中回调函数的学习笔记
2014/07/31 Javascript
详解JavaScript的while循环的使用
2015/06/03 Javascript
在ASP.NET MVC项目中使用RequireJS库的用法示例
2016/02/15 Javascript
纯JS前端实现分页代码
2016/06/21 Javascript
JavaScript中英文字符长度统计方法示例【按照中文占2个字符】
2017/01/17 Javascript
快速实现jQuery多级菜单效果
2017/02/01 Javascript
Vue运用transition实现过渡动画
2019/05/06 Javascript
webpack 处理CSS资源的实现
2019/09/27 Javascript
Javascript基于OOP实实现探测器功能代码实例
2020/08/26 Javascript
html中创建并调用vue组件的几种方法汇总
2020/11/17 Javascript
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
2017/09/05 Python
使用python实现ANN
2017/12/20 Python
opencv python 2D直方图的示例代码
2018/07/20 Python
python 将列表中的字符串连接成一个长路径的方法
2018/10/23 Python
python生成九宫格图片
2018/11/19 Python
Tensorflow训练MNIST手写数字识别模型
2020/02/13 Python
python中yield的用法详解
2021/01/13 Python
公司业务主管岗位职责
2013/12/07 职场文书
海南地接欢迎词
2014/01/14 职场文书
优秀员工评语
2014/02/10 职场文书
自我鉴定总结
2014/03/24 职场文书
婚前保证书范文
2015/02/28 职场文书
新年祝酒词大全
2015/08/11 职场文书
react 项目中引入图片的几种方式
2021/06/02 Javascript
Elasticsearch 索引操作和增删改查
2022/04/19 Python