PHP 7.4可能會(huì)在2019年12月的某個(gè)地方發(fā)布。此頁(yè)面將同時(shí)收到定期更新。最后更新時(shí)間是2019年1月14日
預(yù)加載rfc
預(yù)加載是PHP核心的一個(gè)驚人的補(bǔ)充,可以帶來(lái)一些重大的性能改進(jìn)。
簡(jiǎn)而言之:如果您今天使用的是框架,則必須在每次請(qǐng)求時(shí)加載和重新編譯其文件。預(yù)加載允許服務(wù)器在啟動(dòng)時(shí)在內(nèi)存中加載PHP文件,并使它們永久可用于所有后續(xù)請(qǐng)求。
性能提升當(dāng)然需要付出代價(jià):如果預(yù)加載文件的來(lái)源發(fā)生變化,則必須重新啟動(dòng)服務(wù)器。
輸入屬性rfc
類(lèi)變量可以是類(lèi)型提示:
class A
{
public string $name;
public Foo $foo;
}
更新07-01:截至目前,已合并類(lèi)型屬性,因此已確認(rèn)PHP 7.4。
改進(jìn)的類(lèi)型方差rfc
我過(guò)去曾寫(xiě)過(guò)PHP的類(lèi)型系統(tǒng),所以很高興看到一些改進(jìn)實(shí)際上是在PHP的核心。
類(lèi)型差異是一個(gè)值得自己的博客文章的主題; 簡(jiǎn)而言之:你將能夠使用協(xié)變返回類(lèi)型......
class ParentType {}
class ChildType extends ParentType {}
class A
{
public function covariantReturnTypes(): ParentType
{ /* … */ }
}
class B extends A
{
public function covariantReturnTypes(): ChildType
{ /* … */ }
}
......和逆變論據(jù)。
class A
{
public function contraVariantArguments(ChildType $type)
{ /* … */ }
}
class B extends A
{
public function contraVariantArguments(ParentType $type)
{ /* … */ }
}
更新14-01:RFC目前處于投票階段,但看起來(lái)它會(huì)毫無(wú)問(wèn)題地通過(guò)。
外部函數(shù)接口rfc
外部函數(shù)接口,簡(jiǎn)稱(chēng)FFI,允許從用戶(hù)區(qū)調(diào)用C代碼。這意味著PHP擴(kuò)展可以用純PHP編寫(xiě)。
應(yīng)該指出,這是一個(gè)復(fù)雜的主題。您仍然需要C知識(shí)才能正確使用此功能。
空融合賦值運(yùn)算符rfc
而不是這樣做:
$data['date'] = $data['date'] ?? new DateTime();
你可以這樣做:
$data['date'] ??= new DateTime();
更新22-01:此功能現(xiàn)在在PHP 7.4中合并。
反思參考rfc
像Symfony的var轉(zhuǎn)儲(chǔ)程序這樣的庫(kù)很大程度上依賴(lài)于反射API來(lái)可靠地轉(zhuǎn)儲(chǔ)變量。以前,沒(méi)有對(duì)引用的適當(dāng)反射支持,導(dǎo)致這些庫(kù)依賴(lài)hack來(lái)檢測(cè)引用。
PHP 7.4添加了ReflectionReference解決此問(wèn)題的類(lèi)。
更新02-14:RFC已通過(guò),PHP 7.4已確認(rèn)更改。
mb_str_split添加了RFC
此函數(shù)提供與str_split多字節(jié)字符串相同的功能。
ext-hash始終啟用rfc
正如標(biāo)題所說(shuō),此擴(kuò)展現(xiàn)在可在所有PHP安裝中永久使用。
PEAR默認(rèn)情況下未啟用EXTERNALS
由于PEAR不再維護(hù),核心團(tuán)隊(duì)決定使用PHP 7.4刪除其默認(rèn)安裝。
密碼哈希注冊(cè)表RFC
對(duì)如何使用散列庫(kù)進(jìn)行內(nèi)部更改,以便用戶(hù)可以更輕松地使用它們。
棄用ext/wwdx RFC
此數(shù)據(jù)交換格式從未標(biāo)準(zhǔn)化,現(xiàn)在不推薦使用其擴(kuò)展名。
向后不兼容的更改升級(jí)
升級(jí)PHP版本時(shí),您應(yīng)該始終查看完整的UPGRADING文檔。
以下是一些突出顯示的向后不兼容的更改:
parent::在沒(méi)有父級(jí)的類(lèi)中引用將生成編譯時(shí)錯(cuò)誤而不是運(yùn)行時(shí)錯(cuò)誤。
調(diào)用var_dump一個(gè)DateTime或DateTimeImmutable實(shí)例將不再保留對(duì)象的可訪問(wèn)屬性后面。
openssl_random_pseudo_bytes 將在錯(cuò)誤情況下拋出異常。
嘗試序列化一個(gè)PDO或PDOStatement實(shí)例將生成一個(gè)Exception而不是一個(gè)PDOException。
呼叫g(shù)et_object_vars()上的ArrayObject實(shí)例將返回的屬性ArrayObject本身,而不是包裝的陣列或?qū)ο蟮闹怠U?qǐng)注意,(array)強(qiáng)制轉(zhuǎn)換不受影響。
Latest Signing
App Develop
Common Problems
Website Construction
Weixin Develop
Mobile Website
Website Optimization
Website Optimization
Website Design
Host/Domain