Почему при наследовании получаются два разных результата от вида доступа к свойству?
Есть простой код:
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? Почему наследник не использует в этом случае сеттер для установки значения в свойство своего класса?