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.ini中添加extension=php_mysqli.dll指令的说明
Jun 14 PHP
PHP Header用于页面跳转要注意的几个问题总结
Oct 03 PHP
PHP 判断变量类型实现代码
Oct 23 PHP
php jquery 实现新闻标签分类与无刷新分页
Dec 18 PHP
php中配置文件操作 如config.php文件的读取修改等操作
Jul 07 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
May 10 PHP
PHP使用递归生成文章树
Apr 21 PHP
为何说PHP引用是个坑,要慎用
Apr 02 PHP
Ubuntu彻底删除PHP7.0的方法
Jul 27 PHP
php写入mysql中文乱码的实例解决方法
Sep 17 PHP
php实现分页功能的详细实例方法
Sep 29 PHP
基于PHP+Mysql简单实现了图书购物车系统的实例详解
Aug 06 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
php继承的一个应用
2011/09/06 PHP
php若干单维数组遍历方法的比较
2011/09/20 PHP
有关于PHP中常见数据类型的汇总分享
2014/01/06 PHP
PHP中数据库单例模式的实现代码分享
2014/08/21 PHP
PHP获取数组长度或某个值出现次数的方法
2015/02/11 PHP
php 解析xml 的四种方法详细介绍
2016/10/26 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
PHP基于SPL实现的迭代器模式示例
2018/04/22 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
Google Map API更新实现用户自定义标注坐标
2009/07/29 Javascript
Mootools 1.2教程 同时进行多个形变动画
2009/09/15 Javascript
jquery keypress,keyup,onpropertychange键盘事件
2010/06/25 Javascript
JS弹出可拖拽可关闭的div层完整实例
2015/02/13 Javascript
JS中innerHTML和pasteHTML的区别实例分析
2016/06/22 Javascript
JavaScript交换两个变量值的七种解决方案
2016/12/01 Javascript
文件上传的几个示例分享【推荐】
2016/12/16 Javascript
Webpack实现按需打包Lodash的几种方法详解
2017/05/08 Javascript
基于VUE选择上传图片并页面显示(图片可删除)
2017/05/25 Javascript
JavaScript正则表达式和级联效果
2017/09/14 Javascript
说说Vue.js中的functional函数化组件的使用
2019/02/12 Javascript
js实现超级玛丽小游戏
2020/03/18 Javascript
python list转dict示例分享
2014/01/28 Python
python多重继承实例
2014/10/11 Python
Python while、for、生成器、列表推导等语句的执行效率测试
2015/06/03 Python
让Python更加充分的使用Sqlite3
2017/12/11 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
2018/04/17 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
python3 实现验证码图片切割的方法
2018/12/07 Python
python之拟合的实现
2019/07/19 Python
python使用原始套接字发送二层包(链路层帧)的方法
2019/07/22 Python
分公司经理任命书
2014/06/05 职场文书
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
幼儿园八一建军节活动方案
2014/08/27 职场文书
2015年财务科工作总结范文
2015/05/13 职场文书
承兑汇票延期证明
2015/06/23 职场文书