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语法速查表
Jan 02 PHP
php生成随机数或者字符串的代码
Sep 05 PHP
php生成局部唯一识别码LUID的代码
Oct 06 PHP
解析php session_set_save_handler 函数的用法(mysql)
Jun 29 PHP
php环境下利用session防止页面重复刷新的具体实现
Jan 09 PHP
Laravel 4 初级教程之安装及入门
Oct 30 PHP
浅析php如何实现App常用的秒发功能
Aug 03 PHP
PHP Header失效的原因分析及解决方法
Nov 16 PHP
PHP中仿制 ecshop验证码实例
Jan 06 PHP
PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
Apr 20 PHP
PHP实现的操作数组类库定义与用法示例
May 24 PHP
PHP 观察者模式深入理解与应用分析
Sep 25 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数组的一些常见操作汇总
2011/07/17 PHP
PHP原生模板引擎 最简单的模板引擎
2012/04/25 PHP
php图片缩放实现方法
2014/02/20 PHP
PHP性能优化大全(php.ini)
2016/05/20 PHP
浅谈php中的访问修饰符private、protected、public的作用范围
2016/11/20 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
2020/12/29 PHP
自动刷新网页,自动刷新当前页面,JS调用
2013/06/24 Javascript
判断iframe里的页面是否加载完成
2014/06/06 Javascript
javascript动态判断html元素并执行不同的操作
2014/06/16 Javascript
js实现温度计时间样式代码分享
2015/08/21 Javascript
js实现拉幕效果的广告代码
2015/09/02 Javascript
Javascript设计模式理论与编程实战之简单工厂模式
2015/11/03 Javascript
jquery对复选框(checkbox)的操作汇总
2016/01/13 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
vue动态组件实现选项卡切换效果
2017/03/08 Javascript
vue+axios实现登录拦截的实例代码
2017/05/22 Javascript
vue.js 获取当前自定义属性值
2017/06/01 Javascript
JS开发中基本数据类型具体有哪几种
2017/10/19 Javascript
D3.js实现简洁实用的动态仪表盘的示例
2018/04/04 Javascript
JS使用tween.js动画库实现轮播图并且有切换功能
2018/07/17 Javascript
微信小程序当前时间时段选择器插件使用方法详解
2018/12/28 Javascript
微信小程序可滑动月日历组件使用详解
2019/10/21 Javascript
JavaScript常用工具函数大全
2020/05/06 Javascript
[02:41]DOTA2英雄基础教程 亚巴顿
2014/01/02 DOTA
[48:21]Mski vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
python网络爬虫采集联想词示例
2014/02/11 Python
python 读取目录下csv文件并绘制曲线v111的方法
2018/07/06 Python
python 3.7.4 安装 opencv的教程
2019/10/10 Python
Python实现发票自动校核微信机器人的方法
2020/05/22 Python
python 多线程死锁问题的解决方案
2020/08/25 Python
python利用paramiko实现交换机巡检的示例
2020/09/22 Python
用html5绘制折线图的实例代码
2016/03/25 HTML / CSS
进程的查看和调度分别使用什么命令
2013/12/14 面试题
党的群众路线教育实践活动剖析材料
2014/09/30 职场文书
python字符串拼接.join()和拆分.split()详解
2021/11/23 Python
python实现简单的三子棋游戏
2022/04/28 Python