ThinkPHP5和ThinkPHP6的区别


Posted in PHP onMarch 31, 2021

1.安装方式

thinkphp6只能通过composer安装

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer		# 设置composer为阿里云镜像,解决国内使用composer慢的问题
composer create-project topthink/think myproject			# 安装稳定版,myproject为你的项目名

2.配置文件

thinkphp5里面的config.php被拆分成了app、cache、database、route等等模块,放在了config文件夹;

thinkphp6新引入了一个.env的文件,可以通过读取这个环境设置去配置数据库等等

3.自带web服务

直接php think run就可以在本地启动一个web服务器,还可以用-p参数指定端口

4.目录结构

application文件夹重命名为app

thinkphp5核心框架是项目根目录thinkphp下 , thinkphp6是vendor/topthink

5.控制器

之前继承think\Controller类,现在改为继承BaseController

6.跨域

只需要在middleware.php中注册\think\middleware\AllowCrossDomain就可以搞定跨域问题

7.组件独立

独立ORM

独立模版引擎

8.严格模式

thinkphp6使用了php7严格模式

9.引入Filesystem

10.支持多应用入口

admin应用可以设置admin.php入口文件来访问;api应用可以设置api.php入口文件来访问。

如果要使用多应用模式,你需要安装多应用模式扩展

composer require topthink/think-multi-app

然后你的应用目录结构需要做如下调整,主要区别在app目录增加了应用子目录,然后配置文件和路由定义文件都纳入应用目录下

├─app 应用目录
│  ├─index              主应用
│  │  ├─controller      控制器目录
│  │  ├─model           模型目录
│  │  ├─view            视图目录
│  │  ├─config          配置目录
│  │  ├─route           路由目录
│  │  └─ ...            更多类库目录
│  │ 
│  ├─admin              后台应用
│  │  ├─controller      控制器目录
│  │  ├─model           模型目录
│  │  ├─view            视图目录
│  │  ├─config          配置目录
│  │  ├─route           路由目录
│  │  └─ ...            更多类库目录
│
├─public                WEB目录(对外访问目录)
│  ├─admin.php          后台入口文件
│  ├─index.php          入口文件
│  ├─router.php         快速测试文件
│  └─.htaccess          用于apache的重写
│
├─config                全局应用配置目录
├─runtime               运行时目录
│  ├─index              index应用运行时目录
│  └─admin              admin应用运行时目录

支持在同一个入口文件中访问多个应用,并且支持应用的映射关系以及自定义。如果你通过index.php入口文件访问的话,并且没有设置应用name,系统自动采用自动多应用模式。

自动多应用模式的URL地址默认使用

// 访问admin应用
http://serverName/index.php/admin
// 访问shop应用
http://serverName/index.php/shop

以通过app.php配置文件的default_app配置参数指定默认应用


// 设置默认应用名称
'default_app' => 'home',

11.域名绑定应用

config/app.php 配置文件中定义域名和应用的绑定


'domain_bind' => [
	'www.a.com' => 'index', 	// 域名绑定到www应用
	'admin.a.com' => 'admin', 	// admin绑定到后台应用
], 

12.自动加载

thinkphp5真正实现了按需加载,所有类库采用自动加载机制,并且支持类库映射和composer类库的自动加载;

thinkphp6使用composer方式实现类自动加载

PHP 相关文章推荐
火车头discuz6.1 完美采集的php接口文件
Sep 13 PHP
PHP取进制余数函数代码
Jan 19 PHP
PHP查询网站的PR值
Oct 30 PHP
PHP实现指定字段的多维数组排序函数分享
Mar 09 PHP
php上传图片生成缩略图(GD库)
Jan 06 PHP
PHP实现的多文件上传类及用法示例
May 06 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
Sep 23 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
Nov 02 PHP
PHP 文件锁与进程锁的使用示例
Aug 07 PHP
PHP设计模式之委托模式定义与用法简单示例
Aug 13 PHP
PHP将英文数字转换为阿拉伯数字实例讲解
Jan 28 PHP
PHP基于swoole多进程操作示例
Aug 12 PHP
PHP基本语法
PHP中->和=>的意思
Mar 31 #PHP
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
Laravel中Kafka的使用详解
Mar 24 #PHP
thinkphp5 redis缓存新增方法实例讲解
php优化查询foreach代码实例讲解
Mar 24 #PHP
PHP引擎php.ini参数优化深入讲解
Mar 24 #PHP
You might like
PHP 将图片按创建时间进行分类存储的实现代码
2010/01/05 PHP
php生成短网址示例
2014/05/05 PHP
PHP验证码类ValidateCode解析
2017/01/07 PHP
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
2006/11/30 Javascript
从阿里妈妈发现的几个不错的表单验证函数
2007/09/21 Javascript
jQuery EasyUI 中文API Button使用实例
2010/04/14 Javascript
jquery 3D球状导航的文章分类
2010/07/06 Javascript
分享27个jQuery 表单插件集合推荐
2011/04/25 Javascript
javascript学习笔记(十四) window对象使用介绍
2012/06/20 Javascript
一个简单的网站访问JS计数器 刷新1次加1次访问
2012/09/20 Javascript
animate动画示例(泪奔的小孩)及stop和delay的使用
2013/05/06 Javascript
javascript中Function类型详解
2015/04/28 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
2016/07/09 Javascript
jQuery阻止移动端遮罩层后页面滚动
2017/03/15 Javascript
浅谈JS中的反柯里化( uncurrying)
2017/08/17 Javascript
页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)
2017/08/29 Javascript
Windows下使用Nodejs运行js的方法
2017/09/02 NodeJs
Vue实现导出excel表格功能
2018/03/30 Javascript
关于vue状态过渡transition不起作用的原因解决
2019/04/09 Javascript
Vue模板语法中数据绑定的实例代码
2019/05/17 Javascript
js前端对于大量数据的展示方式及处理方法
2020/12/02 Javascript
关于python的bottle框架跨域请求报错问题的处理方法
2017/03/19 Python
python利用urllib实现爬取京东网站商品图片的爬虫实例
2017/08/24 Python
K-means聚类算法介绍与利用python实现的代码示例
2017/11/13 Python
python引入不同文件夹下的自定义模块方法
2018/10/27 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
TensorFlow——Checkpoint为模型添加检查点的实例
2020/01/21 Python
WoolOvers爱尔兰:羊绒、羊毛和棉针织品
2017/01/04 全球购物
龟牌英国商店:Turtle Wax Brand Store UK
2019/07/02 全球购物
如果Session Bean得Remove方法一直都不被调用会怎么样
2012/07/14 面试题
大学生四年生活自我鉴定
2013/11/21 职场文书
租房协议书怎么写
2014/04/10 职场文书
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
2021/05/12 Python
Mysql中@和@@符号的详细使用指南
2022/06/05 MySQL
git stash(储藏)的用法总结
2022/06/25 Servers