Почему при наследовании получаются два разных результата от вида доступа к свойству?
Есть простой код:
class Test {
private $var;
public function setMe($value) {
$this->var = $value;
}
public function getMe() {
return $this->var;
}
}
class More extends Test {
public $var;
}
$oTest = new Test;
$oMore = new More;
$oTest->setMe('foo');
$oMore->setMe('bar');
var_dump($oMore->var);
echo $oMore->getMe();
echo $oTest->getMe();
Результат вывода будет: NULL bar foo
Вопрос: почему при обращении к свойству $oMore->var
там NULL
, а при доступе через метод getMe
- там значение bar
, которое пытались установить через setMe
? Ведь логично было бы иметь либо NULL
и там и там, либо bar
. Не понимаю логики.
И почему при $oMore->var
значение NULL
? Почему наследник не использует в этом случае сеттер для установки значения в свойство своего класса?