PHP 8.1.0 正式釋出了
PHP 8.1.0 現已釋出,該版本帶來了許多改進和新功能。
列舉
使用列舉而不是一組常量並立即進行驗證。
只讀屬性
只讀屬性不能在初始化後更改,比如,在為它們分配值後。它們可以用於對值物件和資料傳輸物件建模。
First-class 可呼叫語法
現在可以獲得對任何函式的引用。
新的初始化器
物件現在可以用作預設引數值、靜態變數和全域性常量,以及屬性引數,這有效地使使用巢狀屬性成為可能。
純交集型別
當一個值需要同時滿足多個型別約束時,使用交集型別。注意,目前無法將交集和聯合型別混合在一起,例如 A&B|C。
Never 返回型別
使用
never
型別宣告的函式或方法表示它不會返回值,並且會丟擲異常或透過呼叫
die()
、
exit()``、
trigger_error()` 或類似的東西來結束指令碼的執行。
never
不同之處
void
,在於
void
仍然允許程式繼續。這似乎是一個新奇的功能,但它實際上對靜態分析器來說是一個非常有用的功能。
Final 類常量
可以宣告
final
類常量,以禁止它們在子類中被重寫。
顯式八進位制數字表示法
您可以使用0o和0O來表示八進位制數。前面透過在數字前面加上字首的表示法0仍然有效。
纖程
Fibers
是用於實現輕量級協作併發的原語。它們是一種建立可以像生成器一樣暫停和恢復的程式碼塊的方法,但可以從堆疊中的任何位置進行。
Fibers
本身並沒有提供併發性,仍然需要一個事件迴圈。但是,它們允許透過阻塞和非阻塞實現共享相同的
API
。
Fibers
允許擺脫以前在
Promise::then()
或基於生成器的協程中看到的樣板程式碼。庫通常會圍繞 Fiber 構建進一步的抽象,因此無需直接與它們互動。
對字串鍵控陣列的陣列解包支援
PHP 以前支援透過擴充套件運算子在陣列內部解包,但前提是陣列具有整數鍵。現在也可以使用字串鍵解包陣列。
新array_is_list功能
可能偶爾不得不處理這個問題:確定陣列的鍵是否按數字順序排列,從索引 0 開始。就像json_encode決定陣列應該編碼為陣列還是物件一樣。
效能最佳化
PHP 8.1 在效能方面也有一些改動,包括:
-
ARM64
的 JIT 後端 (AArch64) -
繼承快取(避免在每個請求中重新連結類)
-
快速類名解析(避免小寫和雜湊查詢)
-
timelib
和ext/date
效能改進 -
SPL
檔案系統迭代器改進 -
序列化/反序列化最佳化
-
一些內部函式最佳化(
get_declared_classes()
、explode()
、strtr()
、strnatcmp()
、dechex()
) -
JIT
改進和修復
文章來自微信公眾號:PHP自學中心
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70009696/viewspace-2844301/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 原來 PHP 8 都正式釋出了PHP
- PHP 8 釋出了PHP
- PHP 8.0.0釋出了!PHP
- FineUIPro/Mvc/Core v6.4.0 正式釋出了!UIMVC
- 6月6日,HTTP/3 正式釋出了!HTTP
- C# 9.0 正式釋出了(C# 9.0 on the record)C#
- 可怕!.Net 8正式釋出了,.Net野心確實不小!
- 袋鼠儲存 kstore v1.1 版正式釋出了
- 終於!Keras官方中文版文件正式釋出了Keras
- Java11正式釋出了,讓你的程式碼更完美?Java
- php 8.1 六月份好像要釋出了PHP
- 千呼萬喚始出來-TestFlight public link功能正式釋出了!
- Node 之父重構的 Deno 正式釋出了,它會取代 Node 嗎?
- 等保2.0正式釋出了嗎?核心思想包括什麼?
- 《TypeScript 教程》釋出了TypeScript
- Wine 5.0 釋出了!
- HttpReports 2.0 釋出了 !!!HTTP
- ApkToolBoxGUI 0.0.8釋出了!!APKGUI
- KunlunBase 1.0 釋出了!
- Java 18釋出了Java
- Istio 1.12 釋出了!
- 剛剛,Python 3.10 正式釋出了!我發現了一個可怕的功能...Python
- 微軟釋出了Visual Studio 2022 RC版,並將在11月8日釋出正式版微軟
- Metasploit釋出了版本5.0.76
- go1.13釋出了Go
- GoPHP3.2.5釋出了GoPHP
- 朋友們,就在今天,JDK 21,它終於帶著重磅新特性正式釋出了!JDK
- 時隔15天Google又釋出了77版Chrome瀏覽器正式版GoChrome瀏覽器
- Hyperledger Fabric 2.0 Alpha釋出了!
- 我的OpenAI庫釋出了!!!OpenAI
- 《Bash 指令碼教程》釋出了指令碼
- LWUIT 1.3終於釋出了!UI
- 《SSH 入門教程》釋出了
- iOS 16來了!蘋果釋出了iOS 15.5和iPadOS 15.5 RC版(準正式版)iOS蘋果iPad
- Kali Linux 2020.1b釋出了Linux
- Metasploit釋出了新版本5.0.83
- 替代 Trello 的 OpenProject 9 釋出了Project
- [譯] jQuery 3.0 終於釋出了jQuery