OOP 變更日志

這里只記錄了 PHP OOP 模型的變更記錄。有關(guān)變更功能的具體描述與其他相關(guān)注意事項(xiàng),可以到具體的 OOP 文檔鏈接中查看。

版本 說(shuō)明
8.1.0 添加:支持類(lèi)常量的 final 修飾符。此外,接口常量默認(rèn)可覆蓋。
7.4.0 已變更:可以通過(guò) __toString() 拋出異常。
7.4.0 增加:支持限制返回類(lèi)型協(xié)變與參數(shù)類(lèi)型逆變。 如果使用自動(dòng)加載,則完整的差異支持可用。 在一個(gè)文件內(nèi),只有非循環(huán)類(lèi)型引用是可能的。
7.4.0 增加:可以給類(lèi)屬性增加類(lèi)型。
7.3.0 不兼容:不再支持對(duì)使用非 int 鍵的 Traversable 進(jìn)行參數(shù)解包。該功能不是有意設(shè)計(jì)的,因此被刪除。
7.3.0 不兼容:在以前的版本中,可以通過(guò)分配一個(gè)引用來(lái)分離靜態(tài)屬性,這一特性已被移除。
7.3.0 已變更: instanceof 運(yùn)算符允許將字面量作為第一個(gè)操作數(shù),在這種情況下,結(jié)果始終是 false
7.2.0 廢棄:__autoload() 方法已被廢棄,請(qǐng)使用 spl_autoload_register() 代替。
7.2.0 已變更:object 做為保留關(guān)鍵字,不允許做為 classes、interfaces、traits 的名稱。
7.2.0 已變更:分組引入命名空間時(shí),允許行尾添加多余的逗號(hào)分隔符。
7.2.0 已變更:參數(shù)類(lèi)型擴(kuò)展。 現(xiàn)在可以省略來(lái)自重寫(xiě)方法和從接口實(shí)現(xiàn)的參數(shù)類(lèi)型。
7.2.0 已變更:當(dāng)一個(gè)抽象類(lèi)(abstract class)繼承另一個(gè)抽象類(lèi)時(shí),抽象的方法現(xiàn)在可以被覆寫(xiě)。
7.1.0 已變更:增加系統(tǒng)保留關(guān)鍵字 voiditerable,不允許做為 classes、interfaces、traits 的名稱。
7.1.0 增加:類(lèi)常量增加了 訪問(wèn)控制(可見(jiàn)性)。
7.0.0 廢棄:對(duì)未聲明為靜態(tài)的方法(Static)的靜態(tài)調(diào)用。
7.0.0 廢棄:PHP 4 風(fēng)格的構(gòu)造函數(shù) constructor 已被廢棄。
7.0.0 增加: use 組聲明:同一個(gè)命名空間導(dǎo)入的類(lèi)、函數(shù)、常量現(xiàn)在可以組合在一個(gè) use 語(yǔ)句中。
7.0.0 增加:使用 new class 語(yǔ)法來(lái)支持 匿名類(lèi)。
7.0.0 不兼容:Iterating over a non-Traversable object will now have the same behaviour as iterating over by-reference arrays.
7.0.0 已變更:traits 里定義兼容的屬性不再產(chǎn)生錯(cuò)誤信息。
5.6.0 增加: __debugInfo() 方法。
5.5.0 增加: ::class 魔法常量。
5.5.0 增加: finally 來(lái)處理異常。
5.4.0 增加: traits
5.4.0 已變更:如果一個(gè)抽象 類(lèi)定義了 構(gòu)造函數(shù) 的簽名,它將必須被實(shí)現(xiàn)。
5.3.3 已變更: 命名空間 中和類(lèi)同名的方法不再被作為 構(gòu)造函數(shù)。這個(gè)變更不影響非命名空間中的類(lèi)。
5.3.0 已變更:類(lèi)實(shí)現(xiàn)接口的方法所具有的默認(rèn)值不再需要和接口的默認(rèn)值一致。
5.3.0 已變更: 現(xiàn)在它也能夠通過(guò)一個(gè)變量來(lái)引用一個(gè)類(lèi)(例如,echo $classname::constant;)。 這個(gè)變量的值不能是一個(gè)保留關(guān)鍵詞(比如,self、parentstatic)。
5.3.0 已變更: 如果重載方法被定義為 static 將導(dǎo)致一個(gè) E_WARNING 級(jí)別的錯(cuò)誤。 同時(shí)它也需要強(qiáng)制使用 public 的可見(jiàn)性。
5.3.0 已變更: 在 5.3.0 之前的版本,__autoload() 函數(shù)里拋出的異常不能被 catch 塊結(jié)構(gòu)捕獲,并會(huì)導(dǎo)致一個(gè)致命錯(cuò)誤。 現(xiàn)在在一個(gè)前提下 catch 塊能夠捕獲 __autoload 函數(shù)中拋出的錯(cuò)誤。如果拋出一個(gè)自定義異常,這個(gè)自定義異常的類(lèi)必須是可用的。否則 __autoload 函數(shù)可能遞歸自動(dòng)加載這個(gè)自定義異常類(lèi)。
5.3.0 新增: __callStatic 方法。
5.3.0 新增: heredocnowdoc 支持類(lèi)的 常量 和屬性的定義。 注意:heredoc 值必須和雙引號(hào)字符串遵循同樣的規(guī)則(比如,變量將被替換)。
5.3.0 新增: 后期靜態(tài)綁定。
5.3.0 新增: __invoke 方法。
5.2.0 已變更:__toString 方法僅在直接與 echoprint 使用時(shí)被調(diào)用。但是現(xiàn)在它能在任何字符串上下文被調(diào)用(比如在 printf() 中使用 %s ),但不是在其他類(lèi)型的上下文被調(diào)用(例如 %d 修飾符)。 自 PHP 5.2.0 起,將不具有 __toString 方法的對(duì)象轉(zhuǎn)化為字符串將導(dǎo)致一個(gè) E_RECOVERABLE_ERROR 級(jí)別的錯(cuò)誤。
5.1.3 已變更:在 PHP 5 之前的版本,var 的使用已被廢棄,并將產(chǎn)生一個(gè) E_STRICT 級(jí)別的錯(cuò)誤?,F(xiàn)在它不再被廢棄,因此也不會(huì)產(chǎn)生錯(cuò)誤。
5.1.0 已變更:現(xiàn)在 __set_state 靜態(tài)方法在 var_export() 導(dǎo)出類(lèi)時(shí)會(huì)被調(diào)用。
5.1.0 新增:__isset__unset 方法。