PHP 8 有哪些新增功能

將於 年 月 日發布。目前, 處於功能凍結狀態,這意味著無法新增功能。
如果您一直保持最新版本,更新應該不會太困難,因為大多數重要更改之前在版本 中已被棄用。
除了這些變更之外, 還帶來了一系列新功能,例如 編譯器、聯合類型、屬性等。

舊代碼有哪些問題?
由於 是一個新的主要版本,因此可以預期舊程式碼將不再相容。但是,大多數可能導致複雜性的變更已在版本 、 和 中解決。

在最新的變化中,我們可以引用:

實際類型
與物件

對 方法的思考
編碼為第三個參數
參數順序混合
將 從非靜態閉包中分離出來 函數參數 參數順序混合將 從非靜態閉包中分離出來

函數參數。

函數

函數 函數

指令
如果您始終保持程式碼最新,那麼遷移到 不會有任何問題,即使新的更新將是一個主要版本。完整的更改清單可以在 上的發行說明中找到

這是 的新特性
新版本的 應該附帶新功能,為 開發人員提供許多額外的可能性。

即時編譯器
的主要新功能之一是 編譯器,它應該會顯著提高效能。 不是編譯的,而是逐行解釋的。 (即時)編譯器的工作原理是在運行時編譯部分程式碼 在此過程中,它充當程式碼的快取版本。這應該會帶來巨大的效能提升。

的這項新功能已經由 進行了測試。他使用一個簡單的腳本來比較版本 、 和 (有和沒有 )。為此,他在每個版本中運行腳本 次,然後計算平均時間。

以下平均值是他的測試結果:

版本 時間以秒為單位

儘管從不帶 的版本 遷移到版本 不會產生太大差異,但與 的版本 相比,差異是顯著的。 編譯器將效能提高了 以上。

擴充功能始終啟用
在腳本語言的早期版本中, 擴充功能可以選擇停用。然而,由於 是一種非常重要的資料格式, 開發人員決定確保始終啟用該擴充功能。假設這簡化了 的使用。

聯合類型
聯合類型在 、 或 等其他語言中是已知的。這裡兩種或 荷蘭電子郵件列表 更多種類型可以形成聯合,並且可以使用任何提到的類型。在程式碼本身中,它可能看起來像這樣:

公用函數

電子郵件數據

但是,有一個限制,因為空不能是聯合類型的一部分;它不產生回傳值。此外,可以使用 或 宣告可無效的聯合。就像這個例子:

公用函數
公用函數欄

靜態回傳類型
是一個特殊的類別名,在新版本中成為除了和之外的有效回傳類型。

弱映射
中已經加入了 。然而, 中包含了 ,它是此功能的擴充。當只有快取引用物件的要素類別時,可以使用 ​​ 和 來刪除物件。這允許在節省資源的同時管理物件。這是文件中的範例:

類別
私有
公用函數

對物件使用
在先前的版本中,您必須使用 為物件指派類別。但現在您可以將 套用到物件上。這有助於減少原始程式碼的大小。

字串介面
可連結介面自動設定介面。以前,此步驟必須手動完成。可以對所有字串或實作 時執行此操作。在程式碼本身中,它看起來像這樣:

類別

轉換日期和時間

使用 ,將時間轉換為日期要 接觸金屬等於吸煙 容易得多。開發人員新增了和。因此可以轉換 和 。

允許使用除法 。然後您將獲得 、 或 作為回傳值。

鍵入註釋
新版本為所有內部函 資料庫到數據 數和方法添加了正確的類型註釋。

類型錯誤
以前,只有使用者定義的函數才會引發型別錯誤。內部函數發出警告並且為空。從 開始,內部函數也會產生 。

重新分類的引擎警報
直到 ,有許多錯誤只發出警告或註解。此頁面已更新。新 錯誤訊息的完整清單可以在文件中找到。

返回頂端