終於把PHP8.1盼出來了! ! !詳見PHP官方公告:https://www.php.net/releases/8.1/en.php
PHP 8.1.0 現已發布,該版本帶來了許多改進和新功能。
枚舉
使用枚舉而不是一組常數並立即進行驗證。
只讀屬性
只讀屬性不能在初始化後更改,例如,在為它們分配值後。它們可以用於對值物件和資料傳輸物件建模。
First-class 可呼叫語法
現在可以取得任何函數的參考。
新的初始化器
物件現在可以用作預設參數值、靜態變數和全域常數,以及屬性參數,這有效地使使用嵌套屬性成為可能。
純交集類型
當一個值需要同時滿足多個類型限制時,使用交集類型。請注意,目前無法將交集和聯合類型混合在一起,例如 A&B|C。
Never 傳回類型
#使用never 類型宣告的函數或方法表示它不會傳回值,並且會拋出異常或透過呼叫die()、exit()、trigger_error() 或類似的東西來結束腳本的執行。
Final 類別常數
#可以宣告 final 類別常數,以禁止它們在子類別中被重寫。
明確八進位數字表示法
現在可以使用顯式 0o 前綴寫入八進位數字。
纖程
Fibers 是用來實現輕量級協作並發的原語。它們是一種創建可以像生成器一樣暫停和恢復的程式碼區塊的方法,但可以從堆疊中的任何位置進行。 Fibers 本身並沒有提供並發性,仍然需要一個事件循環。但是,它們允許透過阻塞和非阻塞實作共用相同的 API。 Fibers 允許擺脫先前在 Promise::then() 或基於生成器的協程中看到的樣板程式碼。函式庫通常會圍繞 Fiber 建立進一步的抽象,因此無需直接與它們互動。
對字串鍵控陣列的陣列解包支援
PHP 先前支援透過擴充運算子在陣列內部解包,但前提是數組具有整數鍵。現在也可以使用字串鍵解包數組。
效能最佳化
PHP 8.1 在效能方面也有一些改動,包括:
ARM64 的JIT 後端(AArch64)
繼承快取(避免在每個請求中重新連結類別)
#