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 相关文章推荐
同一空间绑定多个域名而实现访问不同页面的PHP代码
Dec 06 PHP
php session 错误
May 21 PHP
简单的PHP多图上传小程序代码
Jul 17 PHP
浅析PHP中的UNICODE 编码与解码
Jun 29 PHP
php中simplexml_load_file函数用法实例
Nov 12 PHP
ThinkPHP中使用Ueditor富文本编辑器
Sep 02 PHP
php ajax异步读取rss文档数据
Mar 29 PHP
php-fpm开启状态统计的方法详解
Jun 23 PHP
php实现将二维关联数组转换成字符串的方法详解
Jul 31 PHP
php strftime函数的详细用法
Jun 21 PHP
laravel使用Faker数据填充的实现方法
Apr 12 PHP
TP5框架实现一次选择多张图片并预览的方法示例
Apr 04 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中反射的应用
2013/06/18 PHP
关于Curl在Swoole协程中的解决方案详析
2019/09/12 PHP
jQuery点击弹出下拉菜单的小例子
2013/08/01 Javascript
JavaScript学习笔记之取数组中最大值和最小值
2016/03/23 Javascript
JS onkeypress兼容性写法详解
2016/04/27 Javascript
JavaScript中自带的 reduce()方法使用示例详解
2016/08/10 Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
2017/02/14 Javascript
react-native fetch的具体使用方法
2017/11/01 Javascript
JavaScript控制浏览器全屏显示简单示例
2018/07/05 Javascript
20个必会的JavaScript面试题(小结)
2019/07/02 Javascript
微信小程序嵌入腾讯视频源过程详解
2019/08/08 Javascript
Centos7 安装Node.js10以上版本的方法步骤
2019/10/15 Javascript
Vue通过WebSocket建立长连接的实现代码
2019/11/05 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
python益智游戏计算汉诺塔问题示例
2014/03/05 Python
用Python进行基础的函数式编程的教程
2015/03/31 Python
详细介绍Python中的偏函数
2015/04/27 Python
python中list常用操作实例详解
2015/06/03 Python
python开发之字符串string操作方法实例详解
2015/11/12 Python
Flask框架使用DBUtils模块连接数据库操作示例
2018/07/20 Python
Python实现一个带权无回置随机抽选函数的方法
2019/07/24 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
2019/12/31 Python
CSS3正方体旋转示例代码
2013/08/08 HTML / CSS
整理HTML5中支持的URL编码与字符编码
2016/02/23 HTML / CSS
美国在线眼镜商城:Eyeglasses.com
2017/06/26 全球购物
Nanushka官网:匈牙利服装品牌
2019/08/14 全球购物
P D PAOLA意大利官网:西班牙著名的珠宝首饰品牌
2019/09/24 全球购物
大专学生求职自荐信
2014/07/06 职场文书
2014最新离职证明范本
2014/09/12 职场文书
大学生学习计划书
2014/09/15 职场文书
教师个人自我剖析材料
2014/09/29 职场文书
宿舍卫生管理制度
2015/08/05 职场文书
SpringBoot 集成Redis 过程
2021/06/02 Redis
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python
html输入两个数实现加减乘除功能
2021/07/01 HTML / CSS
MySQL七种JOIN类型小结
2021/10/24 MySQL