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