2013-01-15 65 views
2

即使從子類中調用函數,我如何使函數始終引用它的當前類對象?在超類中聲明的調用函數時引用子類對象

下面的代碼將回顯:一個

我需要回聲B:B

class superclass { 

    private $a = 'a'; 

    public function getObjectVars() { 
     return get_object_vars($this); 
    } 

} 

class subclass extends superclass { 

    private $b = 'b'; 

} 

$obj = new subclass(); 

$vars = $obj->getObjectVars(); 
foreach ($vars as $name => $value) { 

    echo $name . ': ' . $value; 

} 
+0

如果這個回聲只有一個:那麼這是一個PHP中的錯誤,做報告。 –

+0

有沒有其他的方法來做我想做的事情? 我需要一個通用的超類函數,它將使用get_object_vars來混淆它的子類屬性。 – rzb

回答

5

我認爲你需要在子類的增值經銷商爲了「保護」,而不是私人的父級方法來訪問他們..

+0

如果是這樣的話,這是PHP中的一個錯誤... –

+0

你如何看待?這是預期的行爲。 –

+0

如果我激活子類上的方法,它應該識別子類中的變量,即使它們是私有的。這是基本的面向對象。另一方面,如果他會完成parent :: getObjectVars,那麼你可以認爲它是好的 –

相關問題