2013-01-15 6 views
2

Как мне сделать функцию всегда ссылаться на текущий объект класса, даже если вы вызываете из подкласса?Ссылка на объект подкласса при вызове функции, объявленной в суперклассе

Следующий код эхо A:

Мне нужно повторить б: б

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

Если это эхо только a: a, то это ошибка в PHP, сообщите об этом. –

+0

Есть ли другие способы делать то, что я пытаюсь сделать? Мне нужна универсальная функция суперкласса, которая будет использовать get_object_vars для взаимодействия с ее свойствами подкласса. – rzb

ответ

5

Я думаю, что вам нужно сделать ВАР в подклассе «защищенный» вместо частного, чтобы для родительские методы для доступа к ним.

+0

Если это так, это ошибка в PHP ... –

+0

Как вы оцениваете? это ожидаемое поведение. –

+0

Если я активирую метод в подклассе, он должен распознавать переменные в подклассе, даже если они являются частными. это основной ООП. С другой стороны, если бы он сделал родительский :: getObjectVars, то u мог бы утверждать, что это нормально –

Смежные вопросы