本章内容主要帮助开发者快速了解`6.0`的使用,不要期望通过阅读本章完全掌握ThinkPHP`6.0`的开发,但可以快速理解一些新特性和区别,在后续的深入学习和日常使用中,你仍然需要结合官方的完全开发手册。
事实上,如果你学习过之前的`5.1`版本,应该可以在阅读完本章后快速上手`6.0`版本的开发。
先来大致了解下新版的主要新特性。
## `6.0`主要新特性
* 采用`PHP7`强类型(严格模式)
* 支持更多的`PSR`规范
* 多应用支持
* `ORM`组件独立
* 改进的中间件机制
* 更强大和易用的查询
* 全新的事件系统
* 支持容器`invoke`回调
* 模板引擎组件独立
* 内部功能中间件化
* SESSION机制改进
* 缓存及日志支持多通道
* 引入`Filesystem`组件
* 对`Swoole`以及协程支持改进
* 对IDE更加友好
* 统一和精简大量用法
>[danger] 在主流框架里面,ThinkPHP`6.0`是最先采用PHP7严格模式的。但强类型本身也是一把双刃剑,如果不能很好驾驭,可能会非常被动,所以强烈建议新手首先去恶补下PHP7的[强类型](https://www.php.net/manual/zh/language.oop5.typehinting.php),以免被强类型弄得晕头转向的。
所有的核心文件都是开启了严格模式的类型约束,因此有任何的变量类型不符的情况都会抛出异常,有利于规范代码中的变量类型和提前发现问题隐患。我们也建议你的项目文件也同样开启严格模式,只需要在你的PHP文件开头增加下面一行代码。
```
declare (strict_types = 1);
```
新版究竟有多好用,值得官方耗费一年多的时间匠心开发?
## 更规范
规范两个字看起来很简单,实则有如打通任督二脉一般至关重要。由于采用了Composer依赖开发和功能组件化,核心的每个组件更易维护和更新,也更方便扩展和替换核心功能。每个组件和接口都提供了相应的规范,或者是遵守了某些规范,诸如`PSR`之类。
对于数据库、日志、缓存及`Session`等组件都提供了契约接口,很容易扩展。
此次精简和统一了原有版本某个功能的多种用法,使得团队开发制定规范的时候更容易和避免滥用。
规范的另外一层含义是不允许对框架指定的规则进行破坏,所以你会看到很多原本可以支持的新版里面不再进行支持了,一方面是这些功能都不再建议使用,另外一方面可能是禁止滥用而破坏规范和统一性。
## 更强大
虽然核心精简了,但不代表系统的功能减弱了,底层架构的设计其实是变复杂了,外表看起来越是易用的其实内部架构越是复杂,新版完全重新设计了框架的底层架构,考虑到了HTTP以及命令行,以及各种长连接及协程的支持,事实上由于中间件、系统服务和事件机制的引入,使核心功能变得更易扩展,很多原本内置的功能都已经改成中间件的方式即“插”即用,当不需要的时候可以很容易关闭而不会影响系统的性能。
通过注册服务可以让系统变得更灵活和易扩展。分层的中间件执行机制,让中间件变得更有层次,可以更好的确保中间件的执行优先次序。而事件的观察者和订阅机制,俨然就是一个项目解耦神器。
## 更易用
一个框架如果丧失了易用性这一前提,哪怕功能再强大也难成大器。新版尽量减少一些不必要的配置,并且改进了一些更为直观的配置定义。助手函数、IDE助手、注解扩展、调试工具、异常页面的诸多细节改善都体现了一个框架的易用性。
>[info] 日益完善的ThinkPHP生态也使得在开发过程中更简单的实现某个功能或者业务需求。如果你有好的ThinkPHP扩展或者产品欢迎提交到[`think-awesome`](https://github.com/top-think/think-awesome)。