2019 年10 月24 日發布
官方歷時一年多傾力打造的ThinkPHP6.0版本正式發布,該版本基於精簡核心和統一用法兩大原則在5.1的基礎上對底層架構做了進一步的最佳化改進,並更加規範化。
由於引入了一些新特性,ThinkPHP6.0運行環境要求PHP7.1 (建議PHP7.3 ),不支援5.1的無縫升級(官方提供了升級指導)。
推薦影片教學:《ThinkPHP6.0極速入門》
#主要特性:
● 採用PHP7強型別(嚴格模式)
● 支援更多的PSR規格
● 多應用支援
● ORM元件獨立
● 改良的中間件機制
● 核心架構服務化
● 全新的事件系統
● 容器功能增強
● 模板引擎元件獨立
##● 內部功能中間件化● SESSION機制改善● 快取及日誌支援多通道● 引入Filesystem元件● 對Swoole以及協程支援改進● 對IDE更友善● 統一和精簡大量用法強型別及嚴格模式
在主流框架裡面,ThinkPHP6.0是最早採用PHP7嚴格模式的。所有的核心檔案都是開啟了嚴格模式的類型約束,因此有任何的變數類型不符的情況都會拋出異常,有利於規範程式碼中的變數類型和提前發現問題隱患。多應用模式
新版框架提供了多應用模式支持,預設安裝為單應用,你只需要安裝一個多應用模式擴展就可以更輕鬆的部署多個應用程式而不需要重複安裝依賴元件,每個應用程式都支援獨立入口存取以及網域名稱綁定,也可以使用一個入口檔案實現自動多應用部署。並且自動多應用模式支援智慧識別,對於不存在的應用程式存取會自動切換到單一應用模式進行比對。同時支援應用的映射和禁止存取機制。 多應用程式模式的設計可以讓開發更加模組化,因為每個應用程式的配置、路由及視圖都可以納入應用程式目錄,所以更方便應用的模組化,甚至引入composer應用程式。容器與服務
新版的容器支援PSR-11規範,容器類別的功能特性主要包括:● 綁定類別、對象實例、介面到容器● 建立類別的實例(存在則直接取得)● 容器物件綁定別名##● 支援容器物件(實例化)回呼
● 取得容器物件實例
● 刪除容器中的物件實例
● 提供依賴注入和閘面實作支援
● 呼叫容器物件實例的方法(或閉包)
● 提供容器物件的ArrayAccess支援
#事件系統新版的事件系統可以看成是5.1版本行為系統的升級版,事件系統相比行為系統強大的地方在於事件本身可以是一個類,並且可以更好的支援事件訂閱者。支援事件智慧訂閱,透過反射機制來識別目前訂閱者要訂閱的事件。
事件比較中間件的優勢是事件比中介軟體更精準定位(或粒度更細),並且更適合一些業務場景的擴展。例如,我們通常會遇到用戶註冊或登入後需要做一系列操作,透過事件系統可以做到不侵入原有程式碼完成登入的操作擴展,降低系統的耦合性的同時,也降低了BUG的可能性。
中間件支援完善中間件分為全域中間件、應用中間件、路由中間件和控制器中間件,這四個中間件分組完全獨立執行,但同一個分組內的中間件不會重複執行。中間件方法執行依賴注入,以及請求結束的回呼機制。
核心許多功能都是基於中間件來完成,包含多重應用模式也是採用中介軟體機制執行。
路由和請求新版的路由精簡了許多不必要的功能,路由定義也更規範化和語義化,並且路由定義檔支援納入應用程式目錄,便於模組化開發。路由註解功能獨立為think-annotation函式庫,並且使用更規範,支援IDE提示。
新版的請求對象更易擴展,系統預設安裝後提供了一個app\Request類,你可以在應用程式中直接自訂請求對象,增加必要的屬性和方法。但不會影響對think\Request的依賴注入和門面呼叫。
系統服務# 由於核心框架採用了服務化設計,你可以在你的擴充功能或應用程式中註冊需要的服務。在系統服務中註冊一個物件到容器,或對某些物件進行相關的依賴注入。由於系統服務的執行優先順序問題,可以確保相關元件在執行的時候已經完成相關依賴注入。一個服務類別通常包括註冊(register)和啟動(boot)方法,用於不同階段的執行。 ORM元件化 內建的ORM功能已經完全獨立為think-orm元件,可以獨立使用,ThinkPHP6.0預設依賴安裝了該元件,保持用法不變的同時,增強了查詢功能。 模板引擎組件化 核心不再內建任何模板引擎,僅提供PHP模板支持,官方的模板引擎已經獨立為think-template模板引擎,並預設依賴安裝。你可以更方便的使用第三方模板引擎。 日誌系統 日誌支援多通道、並統一命令列和WEB日誌格式,主要包括: Session機制改進 引入Filesystem元件 Swoole擴充功能改進 調試工具更新composer require topthink/think-debugbar
統一和精簡大量用法
新版對許多用法進行了精簡和統一,盡可能避免在開發過程中規範不一的困惑。開發手冊
更多內容可以查看ThinkPHP6.0的《TP6完全開發手冊》
抱著一份初心和堅持,ThinkPHP始終堅持完善和更新,十三年來持續發布了多個大版本。其實ThinkPHP歷史以來的大版本都提供了超過年18個月的支援和維護,目前ThinkPHP主要版本的維護計劃公告如下: ##ThinkPHP6. 0 GitHub網址:https://github.com/top-think/think?tdsourcetag=s_pctim_aiomsg#https://github .com/top-think/framework?tdsourcetag=s_pctim_aiomsg