本文最初發佈於 stitcher 博客, 經原作者授權由 InfoQ 中文站翻譯並分享。

2020 年 11 月 26 日,PHP 8 將正式發佈。這是一個新的主要版本,它將引入一些重大更改,以及許多新特性和性能改進。PHP 8 目前正處於非常活躍的開發階段,其第一個 Alpha 版已經於 2020 年 6 月 26 日發佈。

因爲新版引入了許多重大更改,你很有可能需要對代碼進行一些更改才能使其運行在 PHP 8 上。如果你一直都在使用最新版本,那麼這一次的升級也應該不會很難,因爲多數重大更改都已在之前的 7.* 版本中棄用了。不用擔心,所有這些棄用的內容都在本文中列出來了。

除了重大更改外,PHP 8 還帶來了一組不錯的新特性,例如 JIT 編譯器聯合類型Attributes 等。

新特性

首先,我們來看新特性。請記住 PHP 8 仍在積極開發當中,因此這個列表會隨着時間的推移而變長。

聯合類型

鑑於 PHP 具有動態類型的性質,在很多情況下聯合類型是很有用的。聯合類型(Union Types)是兩種或多種類型的集合,用戶可以使用其中一種。

複製代碼

public function foo(Foo|Bar $input): int|float;

請注意, void 永遠不能成爲聯合類型的一部分,因爲它表示“根本沒有返回值”。此外,可以使用 |null 或使用現有的 ? 符號來寫 nullable 的聯合類型:

相關文章