首頁 >頭條 > 正文

ThinkPHP6.0今天正式發布

轉載2019-10-31 17:57:5102421
第十期線上培訓班
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日志格式,主要包括:

● 日志增加多通道支持,可以同時或者切換寫入多個通道

● WEB和CLI的日志記錄格式統一,并支持日志格式化

● 對JSON日志格式的改進

● 支持日志寫入事件

Session機制改進

6.0版本的Session機制完全重寫了,并且不再使用PHP內置的Session機制,全新實現一套Session機制,可以更好的支持Swoole/Workerman等環境。

所以不再支持PHP內置的session_*** 系列函數,也不再支持使用$_SESSION讀取session數據,你必須通過框架提供的Session類或者門面來操作,Request類也封裝了Session數據的讀取。

Session支持跨應用讀取和自定義序列化機制,默認采用文件類型記錄Session數據,由于共用了緩存機制,你還可以使用任何支持的緩存類型來記錄Session數據。

引入Filesystem組件

新版增加了Filesystem類庫對文件系統強化了支持,而且可以很方便的支持各種云存儲,包括阿里云和七牛云。

Swoole擴展改進

Swoole擴展同時支持HTTP和Socket服務,支持數據庫和緩存的連接池功能,以及RPC功能。

調試工具更新

原來內置的頁面Trace調試工具已經更改為擴展的方式,改成安裝think-trace擴展,如果通過composer安裝應用的話,默認會安裝topthink/think-trace擴展。

基本用法和之前保持不變,但無需額外配置,默認使用html方式顯示,同時仍然支持瀏覽器控制臺顯示,并僅在調試模式下有效。

同時增加了一個基于debugbar的調試擴展think-debugbar,需要單獨安裝后才能使用。

composer require topthink/think-debugbar

統一和精簡大量用法

新版對很多用法進行了精簡和統一,盡可能避免在開發過程中規范不一的困惑。

開發手冊

更多內容可以查看ThinkPHP6.0的《TP6完全開發手冊

抱著一份初心和堅持,ThinkPHP始終堅持完善和更新,十三年來持續發布了多個大版本。其實ThinkPHP歷史以來的大版本都提供了超過年18個月的支持和維護,目前ThinkPHP主要版本的維護計劃公告如下:

f602e49b4f8f26b10680e8d83d46d7c.png

ThinkPHP6.0 GitHub地址:

https://github.com/top-think/think?tdsourcetag=s_pctim_aiomsg

https://github.com/top-think/framework?tdsourcetag=s_pctim_aiomsg

  • 相關標簽:ThinkPHP6.0
  • 本文轉載于:thinkphp,如有侵犯,請聯系[email protected]刪除
  • 相關文章

    相關視頻


    網友評論

    文明上網理性發言,請遵守 新聞評論服務協議

    我要評論
  • 專題推薦

    推薦視頻教程
  • ThinkPHP6.0極速入門(視頻教程)ThinkPHP6.0極速入門(視頻教程)
  • ThinkPHP6.0公益直播課ThinkPHP6.0公益直播課
  • ThinkPHP6.0完全開發手冊(注解版)ThinkPHP6.0完全開發手冊(注解版)
  • 視頻教程分類
    第十期線上培訓班 白小姐救世民彩图2019