OOP 變更日志

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

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