一文看懂 PHP 8 的新特性
本文最初發佈於 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
的聯合類型: