Скажем, у меня есть два класса:Как я могу ссылаться на переменную дочернего класса из метода унаследованного родительского класса в PHP?
class ParentClass
{
public function getSomething()
{
return $this->variable_name;
}
}
class ChildClass extends ParentClass
{
private $variable_name = 'something specific to child class';
...
}
Тогда я вызываю код для конкретизации ChildClass
и вызвать унаследованный getSomething()
метод:
$object = new ChildClass();
$value = $object->getSomething();
Когда я звоню, что последней строки, он дает мне ошибку, потому что $variable_name
не существует в ParentClass
. Я ожидаю, что ChildClass
наследует метод getSomething()
, но я понимаю, что, поскольку он не переопределяется явно в ChildClass
, он использует область родителя при запуске родительской версии метода.
Как наиболее эффективно иметь ChildClass
наследует метод и дать ему возможность читать $variable_name
, когда указанный метод называется классом ребенка?
Просто сделайте его защищенным, а не частным. Частный означает, что он принадлежит к этому классу и только к этому классу (без наследования): https://eval.in/572905 vs https://eval.in/572906 –
Что делать, если какой-либо дочерний класс не имеет этой переменной? какой родитель должен делать? –
Конечно, я бы проверил наличие переменной. И спасибо за комментарий, Робби. Я полностью пропустил это. – TerranRich