本章內容主要幫助開發者快速了解`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)。