OOP 變更日志

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

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