2013-08-04 165 views
0

有時候我迷路了,開始懷疑我是否正在用PHP編寫課程。php繼承:子類繼承父類中的數據?

舉例來說,這些都是很基本和簡單的類,

class base { 

    protected $connection = null; 

    /** 
    * Set the contructor for receiving data. 
    */ 
    public function __construct($connection) 
    { 
     $this->connection = $connection; 

    } 

    public function method() 
    { 
     print_r(get_object_vars($this)); 
    } 

} 

class child extends base{ 

    public function __construct(){ 
    } 

    public function method() 
    { 
     print_r(get_object_vars($this)); 
    } 
} 

我有child類從base延長。我將一些數據/信息傳遞給base類。我希望child類繼承了我剛剛通過的數據/信息。例如,

$base = new base("hello"); 

$child = new child(); 
$child->method(); 

所以我會承擔我得到Array ([connection] => hello)是我的答案。

,但我得到這實際上Array ([connection] =>)

因此,這意味着我必須每一次傳遞數據塊到少兒班從基座延伸。否則我不會得到Array ([connection] => hello)作爲我的答案。

是否有正確的方法來編寫子類以繼承父類傳遞的數據?

+0

爲什麼不直接分配「你好」的構造函數實例,然後所有設置......有這兩個實例類之間沒有連接,使孩子可以繼承「HELLP」 –

+0

對不起,我不沒辦法。你能給我舉個例子嗎?謝謝。 – laukok

+0

awww。忽略它。我現在明白了。 – laukok

回答

0

看起來你在混淆模板(類)和對象(類的實例)。

  • 如何將instanciating base類的一個對象,具有某些給定的初始值對child類的其他對象產生任何影響? 類別child的實例將不會動態「繼承」類base實例的某些屬性。

  • 如果你想從你的base__construct方法初始化一些保護屬性,如果你想這是來自您的child類也可以,而不必重新編寫__construct方法,那麼你一定不能覆蓋__construct方法child類。

+0

感謝您的回覆。我怎麼不''覆蓋你的子類的__construct方法。「? – laukok