Я учусь PHP, и я застрял я следующий код:PHP: доступ к защищенному вар из дочернего класса
<?php
class dogtag {
protected $Words;
}
class dog {
protected $Name;
protected $DogTag;
protected function bark() {
print "Woof!\n";
}
}
class poodle extends dog {
public function bark() {
print "Yip!\n";
}
}
$poppy = new poodle;
$poppy->Name = "Poppy";
$poppy->DogTag = new dogtag;
$poppy->DogTag->Words = "My name is
Poppy. If you find me, please call 555-1234";
var_dump($poppy);
?>
Это то, что я получил:
PHP Fatal error: Uncaught Error: Cannot access protected property poodle::$Name
Это выглядит странно мне, поскольку я должен получить доступ к защищенным vars и функциям из дочерних классов.
Может ли кто-нибудь объяснить, где я ошибаюсь?
Большое спасибо.
Спасибо @ Даан, но я не уверен, что получаю. Вы имеете в виду, что я пытаюсь получить к нему доступ из экземпляра ($ poppy) подкласса, а не из определения подкласса (класс poodle extends ...)? – S4rg0n
Это означает, что вы не получаете доступ к нему из класса собаки, а снаружи. – Daan
Мне очень жаль, но я не понимаю. Я пытаюсь получить доступ к $ Name из подкласса пуделя, который наследуется от класса собаки. Я создаю экземпляр пуделя ($ poppy), и я пытаюсь изменить защищенное var $ Name. Я понимаю, что не могу сделать это с помощью частного var, но $ Name защищен. Так как $ poppy - это экземпляр класса poodle, я должен иметь возможность изменять var var защищенного родителя. Благодарим за терпение. – S4rg0n