php 8.0.0 是最新的主要版本,它引入了一些重大變更,以及許多新特性和效能優化,包括命名引數、聯合型別、註解、constructor property promotion、match 表示式、nullsafe 運算子、jit,以及對型別系統、錯誤處理和一致性的改進。
attributes,註解
這裡的 attributes 也就是其它語言中的 annotations(註解),它提供了一種向類新增元資料的方法,無需解析文件塊。
php7
class postscontroller
", methods=)
*/public function get($id)
}php8
", methods: ["get"])]
public function get($id)
}
union types,聯合型別union types 支援接收多個不同型別的值,它是兩種或多種型別的集合,使用時可以選擇其一。包括 php 在內的開源生態的標準庫中使用聯合型別非常普遍,php 支援聯合型別,將會允許將更多型別資訊從 phpdoc 遷移至函式簽名。可以說,泛型之後,聯合型別是目前型別宣告系統中最大的突破口。新的 static 返回型別雖然已經可以返回 self,但是考慮到 php 具有動態型別的性質,php 8 中支援 static 返回型別將更加高效,對於許多開發者來說應當非常有用。
class foo
}
jit,just-in-time,即時編譯php 8引入了兩個jit編譯引擎。跟蹤jit(兩者中最有前途的一種),在綜合基準測試中顯示出大約3倍的效能改進,在某些特定的長時間執行的應用程式中顯示出1.5-2倍的效能改進。典型的應用程式效能與php 7.4相當。
jit 是一種編譯器策略,它將**表述為一種中間狀態,在執行時將其轉換為依賴於體系結構的機器碼,並即時執行。在 php 中,這意味著 jit 將為 zend vm 生成的指令視為中間表述,並以依賴於體系結構的機器碼執行,也就是說託管**的不再是 zend vm,而是更為底層的 cpu。
雖然自 php 7.0 以來,通過優化核心資料結構 hashtable、強化 zend vm 中某些操作碼與持續改進 opcache 的 optimizer 元件等具體措施,php 效能得到了顯著提公升,但是實際上這些優化似乎已經走到極限了。現在 jit 從底層著手,被認為是目前提公升 php 效能的最佳出路。
關於引入 jit 後的效能對比(以及 php 8 整體效能),可以參考一下phoronix 的基準測試(注:用的是 5 月底的原始碼構建版進行的測試)。
php8強型別,PHP8新特性盤點
php 8.0.0 已經正式發布了,這個對於phper無疑是乙個令人振奮的訊息。它包含了很多新功能與優化項,包括命名引數 聯合型別 註解 構造器屬性提公升 match 表示式 nullsafe 運算子 jit 並改進了型別系統 錯誤處理 語法一致性。最人性化的特性 命名引數 聯合型別 mixed 型...
php8強型別,PHP8新特性盤點
php 8.0.0 已經正式發布了,這個對於phper無疑是乙個令人振奮的訊息。它包含了很多新功能與優化項,包括命名引數 聯合型別 註解 構造器屬性提公升 match表示式 nullsafe運算子 jit,並改進了型別系統 錯誤處理 語法一致性。最人性化的特性 命名引數 聯合型別 mixed型別 這...
Azure Logic Apps正式發布
管理支援 該版本允許配置額外的診斷,讓開發人員可以向azure event hubs傳送遙測事件。一旦資料發布到了event hub,開發人員就有許多種方法儲存和分析這些資料。一種選擇是,在將資料發布到microsoft power bi進行趨勢分析或資料探勘之前,可以將資料流式傳輸給azure s...