ThinkPHP5和ThinkPHP6的区别

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地址默认使用


  1. // 访问admin应用 http://serverName/index.php/admin // 访问shop应用 http://serverName/index.php/shop
  1. // 访问admin应用
  1. http://serverName/index.php/admin
  1. // 访问shop应用
  1. 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方式实现类自动加载