許多可以被修正的 Fatal 錯(cuò)誤,在 PHP7 中將以 Exceptions 異常的形式拋出。這些 Error Exceptions 繼承于?Error?類。而Error?類則實(shí)現(xiàn)了異?;?Throwable?接口。?
PHP7 中詳細(xì)的 Error 信息可以參考?PHP7 錯(cuò)誤?。本文中僅僅介紹和向后兼容有關(guān)的信息如下。
之前,類構(gòu)造函數(shù)在失敗時(shí)總是返回NULL或者返回一個(gè)不可用的 Object,但從 PHP7 開始,在構(gòu)造函數(shù)初始化失敗時(shí)會(huì)拋出異常。
現(xiàn)在,解析?eval()?錯(cuò)誤會(huì)拋出一個(gè)?解析異常?對(duì)象。其可以通過?catch?捕捉,并做相應(yīng)處理。
所有?E_STRICT?級(jí)別的報(bào)錯(cuò)已重新分配到其他報(bào)錯(cuò)等級(jí)中。E_STRICT?常量依然保留,所以當(dāng)你設(shè)置報(bào)錯(cuò)等級(jí)為error_reporting(E_ALL|E_STRICT)?時(shí),不會(huì)引起報(bào)錯(cuò)。
變更情況如下表?
由于 PHP7 采用抽象的語法樹解析代碼文件,并且過去的 PHP 版本無法滿足該特性,這一變化將引起一些一致性問題。本節(jié)詳細(xì)介紹這塊的情況。
間接的使用變量、屬性、方法,將嚴(yán)格按照從左到右的順序執(zhí)行,而不會(huì)因形式問題導(dǎo)致歧義。下表將表明這一改變引起的差異。?
更多建議: