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 相关文章推荐
让你同时上传 1000 个文件 (一)
Oct 09 PHP
CodeIgniter CLI模式简介
Jun 17 PHP
php使用date和strtotime函数输出指定日期的方法
Nov 14 PHP
Yii核心组件AssetManager原理分析
Dec 02 PHP
thinkphp3.0输出重复两次的解决方法
Dec 19 PHP
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
Oct 01 PHP
php版微信公众号自定义分享内容实现方法
Sep 22 PHP
php简单截取字符串代码示例
Oct 19 PHP
PHP计算近1年的所有月份
Mar 13 PHP
php变量与JS变量实现不通过跳转直接交互的方法
Aug 25 PHP
PHP单例模式与工厂模式详解
Aug 29 PHP
php判断文件上传图片格式的实例详解
Sep 30 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
PHP5.5和之前的版本empty函数的不同之处
2014/06/13 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
2017/03/16 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2019/03/30 PHP
(JS实现)MapBar中坐标的加密和解密的脚本
2007/05/16 Javascript
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
基于jquery的监控数据是否发生改变
2011/04/11 Javascript
jquery绑定原理 简单解析与实现代码分享
2011/09/06 Javascript
用js来刷新当前页面保留参数的具体实现
2013/12/23 Javascript
node.js操作mongoDB数据库示例分享
2014/11/26 Javascript
js实现touch移动触屏滑动事件
2015/04/17 Javascript
基于jQuery+Cookie实现的防止刷新的在线考试倒计时
2015/06/19 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
2016/07/12 Javascript
Angular 应用技巧总结
2016/09/14 Javascript
nodejs搭建本地服务器并访问文件的方法
2017/03/03 NodeJs
Angular.js前台传list数组由后台spring MVC接收数组示例代码
2017/07/31 Javascript
详解JS构造函数中this和return
2017/09/16 Javascript
vue使用Element组件时v-for循环里的表单项验证方法
2018/06/28 Javascript
使用vue2实现带地区编号和名称的省市县三级联动效果
2018/11/05 Javascript
javascriptvoid(0)含义以及与"#"的区别讲解
2019/01/19 Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
2019/04/24 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
对Python实现简单的API接口实例讲解
2018/12/10 Python
python接口自动化如何封装获取常量的类
2019/12/24 Python
python实现连连看游戏
2020/02/14 Python
Html5大文件断点续传实现方法
2015/12/05 HTML / CSS
银行见习期自我鉴定
2014/01/29 职场文书
中学生班主任评语
2014/01/30 职场文书
教师师德演讲稿
2014/05/06 职场文书
团日活动总结模板
2014/06/25 职场文书
民族团结演讲稿范文
2014/08/27 职场文书
夫妻忠诚协议书范本
2014/11/17 职场文书
作文批改评语
2014/12/25 职场文书
2015学校师德师风工作总结
2015/04/22 职场文书
springmvc直接不经过controller访问WEB-INF中的页面问题
2022/02/24 Java/Android
十大最强妖精系宝可梦,哲尔尼亚斯实力最强,第五被称为大力士
2022/03/18 日漫
python的netCDF4批量处理NC格式文件的操作方法
2022/03/21 Python