我可能錯過了一些明顯的東西,因爲這是其他OOP語言的基本功能,但我正在努力與PHP的方式做到這一點。我明白,PHP是不是「真正的」OOP語言,但仍然...在派生類派生類到基類在PHP
我後來把一個對象實例化爲派生類到基類。沿着線的東西:
class Some{}
class SomeMock extends Some {}
function GetSomeMock(){
$mock = new SomeMock();
return (Some)$mock; //Syntax error here
}
我發現有向下轉換的基類對象派生這可能與一些討厭的扭動奇怪的要求的一些問題,但這些基本功能並不一定是困難的。我在這裏錯過了什麼?
編輯:它似乎總是重要的,我試圖實現。沒問題。 GetSomeMock()是一個工廠方法,它將返回一個模擬對象存根(派生自基類,構造函數中預填充的所有屬性)和預期屬性的值。然後我會比較它的基本類型的另一個目的是從數據庫恢復:
$this->assertEquals($mockObject, $realObject);
這瞬間失敗爲$ mockObject和$ realObject是不同類型的。我可以想象有很多解決方法可以實現,但我希望儘可能簡單。
你想達到什麼目的?由於靜態類型檢查,這在某些語言中是必需的,但PHP使用動態類型。 – Barmar 2013-05-09 21:07:03
_我明白PHP不是「真正的」OOP language_這是不準確的,特別是從5.3版本開始。 – 2013-05-09 21:07:06