摘要:性能提升當(dāng)然需要付出代價(jià)如果預(yù)加載文件的來源發(fā)生變化,則必須重新啟動(dòng)服務(wù)器。應(yīng)該指出,這是一個(gè)復(fù)雜的主題。默認(rèn)情況下不啟用由于不再維護(hù),核心團(tuán)隊(duì)決定使用刪除其默認(rèn)安裝。將在錯(cuò)誤情況下拋出異常。請(qǐng)注意,強(qiáng)制轉(zhuǎn)換不受影響。
新特性
預(yù)加載
預(yù)加載是PHP核心的一個(gè)驚人的補(bǔ)充,可以帶來一些重大的性能改進(jìn)。
簡(jiǎn)而言之:如果您今天使用的是框架,則必須在每次請(qǐng)求時(shí)加載和重新編譯其文件。 預(yù)加載允許服務(wù)器在啟動(dòng)時(shí)在內(nèi)存中加載PHP文件,并使它們永久可用于所有后續(xù)請(qǐng)求。
性能提升當(dāng)然需要付出代價(jià):如果預(yù)加載文件的來源發(fā)生變化,則必須重新啟動(dòng)服務(wù)器。
設(shè)置強(qiáng)類型
類變量類型可以提前聲明:
class A { public string $name; public Foo $foo; }
復(fù)制代碼更新07-01:截至目前,已合并類型屬性,因此已確認(rèn)PHP 7.4。
改進(jìn)類型差別
我過去曾寫過 PHP 的類型系統(tǒng),所以很高興看到一些改進(jìn)實(shí)際上是在 PHP 的核心。
類型差異是一個(gè)值得自己的博客文章的主題; 簡(jiǎn)而言之:你將能夠使用協(xié)變返回類型......
class ParentType {} class ChildType extends ParentType {} class A { public function covariantReturnTypes(): ParentType { /* … */ } } class B extends A { public function covariantReturnTypes(): ChildType { /* … */ } } 復(fù)制代碼和回調(diào)參數(shù) class A { public function contraVariantArguments(ChildType $type) { /* … */ } } class B extends A { public function contraVariantArguments(ParentType $type) { /* … */ } }
更新14-01:RFC目前處于投票階段,但看起來它會(huì)毫無問題地通過。
外部函數(shù)接口
外部函數(shù)接口,簡(jiǎn)稱 FFI ,允許從用戶區(qū)調(diào)用 C代碼。 這意味著 PHP 擴(kuò)展可以用純 PHP 編寫。
應(yīng)該指出,這是一個(gè)復(fù)雜的主題。 您仍然需要 C 的知識(shí)才能正確使用此功能。
空融合分配運(yùn)算符
而不是這樣做:
$data["date"] = $data["date"] ?? new DateTime();
復(fù)制代碼你可以這樣做:
$data["date"] ??= new DateTime();
復(fù)制代碼更新22-01:此功能現(xiàn)在在PHP 7.4中合并。
獲取更多利潤(rùn)
從技術(shù)上講,這不是與 PHP 7.4 相關(guān)的更新,但它絕對(duì)值得一提。 RFC 的投票規(guī)則已經(jīng)改變:它們總是需要 2/3 的多數(shù)才能通過。
反射引用
像 Symfony 的 var 轉(zhuǎn)儲(chǔ)程序這樣的庫(kù)很大程度上依賴于反射 AP I來可靠地轉(zhuǎn)儲(chǔ)變量。 以前,沒有對(duì)引用的適當(dāng)反射支持,導(dǎo)致這些庫(kù)依賴 hack 來檢測(cè)引用。
PHP 7.4 添加了 ReflectionReference 類來解決這個(gè)問題。
更新02-14:RFC已通過,PHP 7.4已確認(rèn)更改。
mb_str_split 的添加
此函數(shù)提供與 str_split 相同的功能,但在多字節(jié)字符串上。
ext-hash 始終啟用
正如標(biāo)題所說,此擴(kuò)展現(xiàn)在可在所有 PHP 版本中安裝永久使用。
PEAR 默認(rèn)情況下不啟用
由于 PEAR 不再維護(hù),核心團(tuán)隊(duì)決定使用 PHP 7.4 刪除其默認(rèn)安裝。
密碼哈希注冊(cè)表
對(duì)如何使用散列庫(kù)進(jìn)行內(nèi)部更改,以便用戶可以更輕松地使用它們。
棄用 ext/wwdx
此數(shù)據(jù)交換格式從未標(biāo)準(zhǔn)化,現(xiàn)在不推薦使用其擴(kuò)展名。
不向后兼容的變化
升級(jí) PHP 版本時(shí),您應(yīng)該始終查看完整的 UPGRADING 文檔。
以下是一些突出顯示的向后不兼容的更改:
在沒有父級(jí)的類中引用 parent :: 將生成編譯時(shí)錯(cuò)誤而不是運(yùn)行時(shí)錯(cuò)誤。
在 DateTime 或 DateTimeImmutable 實(shí)例上調(diào)用var_dump 將不再在對(duì)象上留下可訪問的屬性。
openssl_random_pseudo_bytes 將在錯(cuò)誤情況下拋出異常。
嘗試序列化 PDO 或 PDOStatement 實(shí)例將生成異常而不是 PDOException 。
在 ArrayObject 實(shí)例上調(diào)用 get_object_vars() 將返回 ArrayObject 本身的屬性,而不是包裝數(shù)組或?qū)ο蟮闹怠?請(qǐng)注意, (array) 強(qiáng)制轉(zhuǎn)換不受影響。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/31050.html
摘要:目前,美國(guó)公司的安卓,已經(jīng)正式全面推出有幾個(gè)多月了。安卓最新功能及變化根據(jù)的消息得出,將從系統(tǒng)底層支持引擎。對(duì)于需要經(jīng)常進(jìn)行國(guó)際出行的安卓手機(jī)用戶來說,這是一項(xiàng)非常方便的輔助撥號(hào)功能,省去手動(dòng)添加國(guó)家地區(qū)代碼的繁雜步驟。 目前,美國(guó)?Google公司的?AndroidP?(安卓9.0),已經(jīng)正式全面推出有幾個(gè)多月了。眾多手機(jī)品牌廠商也都在積極的進(jìn)行更新適配?Android 9.0?系統(tǒng)...
摘要:更新啦第一課體驗(yàn)第二課基礎(chǔ)類型和入門高級(jí)類型第三課泛型第四課解讀高級(jí)類型要來了看了的視頻特別興奮要來了是用開發(fā)的我揣測(cè)在的帶領(lǐng)下會(huì)成為主流呢要不先學(xué)點(diǎn)年最酷的前端技術(shù)我是年初開始使用的自從開始用上了就喜歡上了真的愛不釋手最愛他幾點(diǎn)很多小錯(cuò)誤 更新啦 第一課, 體驗(yàn)typescript 第二課, 基礎(chǔ)類型和入門高級(jí)類型 第三課, 泛型 第四課, 解讀高級(jí)類型 vue3要來了 看了vue ...
摘要:來了由秘猿科技與聯(lián)合主辦,亞洲第一屆大會(huì)將于月日在中國(guó)北京正式開啟。將是一次亞洲社區(qū)的大聚會(huì),也因?yàn)榇舜未髸?huì),亞洲本土的社區(qū)連接到了全球其它地區(qū)的社區(qū)。未來,我們將推進(jìn)到亞洲的其他國(guó)家,更好的促進(jìn)當(dāng)?shù)厣鐓^(qū)與全球社區(qū)的合作和互助。 showImg(https://segmentfault.com/img/bVbqUjV?w=1089&h=647); RustCon Asia 來了!由秘猿...
閱讀 4648·2021-10-25 09:48
閱讀 3223·2021-09-07 09:59
閱讀 2210·2021-09-06 15:01
閱讀 2710·2021-09-02 15:21
閱讀 2741·2019-08-30 14:14
閱讀 2196·2019-08-29 13:59
閱讀 2531·2019-08-29 11:02
閱讀 2545·2019-08-26 13:33