Мне трудно понять, почему я могу получить доступ к свойству из родительского класса, но оно равно NULL, даже если оно уже было установлено родителем (и не было сознательно сброшено).Я подумал, что это может быть связано с тем, что это свойство было установлено закрытым методом, но без разницы, когда я изменил на public.Вот радикально упрощенный пример:
class TheParent
{
protected $_parent_property;
function __construct()
{}
private function parent_method($property);
{
$this->_parent_property = $property;
$call = new TheChild;
$call->child_method();
}
}
class TheChild extends TheParent
{
function __construct()
{
parent::construct();
}
public function child_method();
{
echo $this->_parent_property;
exit;
}
}
$test = new TheParent;
$test->parent_method('test');
Я работал над этим, передавая родительское свойство потомку, когда потомок создается родителем, т.е. new TheChild($this->_parent_property)
, но я все еще не понимаю, почему $ this-> _ parent_property устанавливается в NULL при доступе от дочернего элемента в моем исходном примере.
Я знаю, что если я установлю это свойство из родительского конструктора, я смогу получить к нему доступ просто отлично,Я пытаюсь понять, почему свойство, установленное родительским методом и доступное другими родительскими методами, не доступно из дочернего класса, который расширяет родительский.
Кто-нибудь может объяснить?Спасибо!