PHP 8.3 將于 2023 年 11 月 23 日更新。它將添加類型化類常量、一個用于json_validate檢查 json 有效負(fù)載的新輔助函數(shù)以及對 Randomizer 類、讀取 ini 配置等的一些小改進(jìn)。
PHP 團(tuán)隊將于本月底發(fā)布 PHP 的新的小版本。新版本將主要包含一些改進(jìn)和功能,除了少數(shù)幾個之外,對于最終用戶來說并不是非常相關(guān)。
類型化類常量
我們所有人都會在某個時候使用常量。到目前為止,常量的類型由其值推斷。這也意味著,繼承或?qū)崿F(xiàn)類的能力可以更改類型。簡而言之,新功能將如下所示:
class Foo { public int BAZ = 1; }
登錄后復(fù)制
驗證 JSON 有效負(fù)載
在幾乎所有必須讀取、轉(zhuǎn)換和寫入 JSON 的情況下,都必須先對其進(jìn)行驗證。可以通過執(zhí)行“測試解碼”來查看是否拋出了異常,或者只是為無效的有效負(fù)載情況設(shè)置一個 else 分支。
對于較小的有效負(fù)載,這可能還可以,但是將非常大的 JSON 字符串解碼為數(shù)組僅檢查是否有效并不優(yōu)雅。此外,它會導(dǎo)致內(nèi)存和/或性能問題。
新的 json_validate 函數(shù)承諾檢查給定的字符串是否有效的 JSON,并且性能更高,更節(jié)省內(nèi)存。如下所示:
json_validate(string $json, int $depth = 512, int $flags = 0): bool
登錄后復(fù)制
進(jìn)一步的改進(jìn)
正如我所說,即將推出的 PHP 8.3 版本還有進(jìn)一步的改進(jìn)。由于我個人認(rèn)為它們并不重要,我只想在這里提到它們以求完整。
Randomizer 改進(jìn):小改進(jìn),例如為隨機(jī)浮點數(shù)值指定范圍或定義字符串長度。
只讀修訂:允許只讀屬性在克隆時重新初始化。這似乎是一個極端情況,但對于深度克隆可能很重要。
#[Override] 屬性:該屬性用于表示程序員的“意圖”。它本質(zhì)上表示“我知道此方法來自父類,我想覆蓋它。如果這會改變,請告訴我。”
匿名只讀類:有些自我解釋。直到現(xiàn)在,無法創(chuàng)建它們,現(xiàn)在 PHP 引入了它。
動態(tài)類常量獲取:PHP 允許使用大括號讀取動態(tài)類屬性。使用 8.3,也可以讀取常量(說真的,不要這樣做)。
Traits 中的靜態(tài)屬性:將重新聲明從父類繼承的靜態(tài)屬性。就我個人而言,這是你在 PHP 中所能做的一切邪惡的混合體。為什么?檢查一下。
還有更多。由于我個人認(rèn)為它們不相關(guān),因此我沒有在這里列出它們。有關(guān)所有更改的完整列表,請查看官方遷移指南。
結(jié)論
與每個新版本一樣,沒有黃金法則可以遵循是否要更新。我們強(qiáng)烈建議使用最新版本,這是因為最新版本通常會修復(fù)之前版本中的漏洞和錯誤,并提供更好的性能和功能。