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