PHP代表“超文本預處理器”,是在服務器端執行的腳本語言,類似于C語言,是一種常用的網站編程語言。隨著時間的發展,PHP不斷更新迭代。再過幾個月,PHP8將于2020年11月26日發布。作為一個全新的升級版本,PHP8進行了許多重大調整和更改。相信每個人都迫不及待地想了解PHP8有哪些新特性?本文總結了幾點PHP8新功能的亮點!
1、JIT進入PHP8
JIT就是Just-In-Time的縮寫,中文翻譯為即時編譯。它作為一種編譯器策略,將代碼表述為一種中間狀態,在運行時將其轉換為依賴于體系結構的機器碼,并即時執行。在 PHP 中,這意味著 JIT 將為 Zend VM 生成的指令視為中間表述,并以依賴于體系結構的機器碼執行,也就是說托管代碼的不再是 Zend VM,而是更為底層的 CPU。為什么要讓JIT進入PHP8呢?因為JIT從底層開始優化PHP的性能,突破了PHP性能優化的瓶頸。
2、PHP8支持Union Types
Union Types,中文翻譯為聯合類型。它支持接收多個不同類型的值,它是兩種或多種類型的集合,使用時可以選擇其一。如今不僅僅是PHP,許多其他的開源生態的標準庫中,都在廣泛的使用聯合類型。而PHP8支持Union Types,將會允許將更多類型信息從 phpdoc 遷移至函數簽名。我們可以看到,繼泛型之后,聯合類型是目前類型聲明系統中最大的突破口。
3、PHP8中支持static返回類型
雖然PHP已經可以返回self了,但是考慮到PHP具有動態類型的性質,PHP8的新特性增加了static返回類型,對于許多開發者來說,是相當使用的調整和改變了。
class Foo
{
public function test(): static
{
return new static();
}
}
4、增加注解
這里的Attributes也就是其它語言中的annotations(注解),它提供了一種向類添加元數據的方法,不需要解析文檔塊。
5、PHP8引入了弱引用
WeakMaps 允許創建從對象到任意值的映射(類似 SplObjectStorage),而不會阻止對用作 key 的對象進行垃圾回收。只要將對象添加到 WeakMap 中,GC 在觸發條件時就可以將其占用內存回收。
class Foo
{
private WeakMap $cache;
public function getSomethingWithCaching(object $obj): object
{
return $this->cache[$obj]
??= $this->computeSomethingExpensive($obj);
}
}
以上就是關于PHP8有哪些新特性的總結,大家對此次的PHP8新版本有什么看法呢?想了解更多關于PHP的信息,請繼續關注中培偉業。