Как мы можем получить доступ к исходной переменной родительского класса через дочерний класс, если дочерний класс переопределяет ее после расширения.
class SimpleClass{
public $var = 'This is Parent';
public function getVar(){
return $this->var;
}
}
class ExtendClass extends SimpleClass{
public $var = 'This is Child';
public function getParent(){
return parent::getVar();
}
}
$obj = new ExtendClass();
echo $obj->getParent(); // Prints 'This is Child'
Я уверен, что он что-то делает с псевдопеременной $ this, потому что я создаю ExtendClass, в этом контексте $ this имеет доступ только к переопределенной переменной $ var.
Поэтому я попытался получить статический доступ к переменной с помощью методов класса.
class SimpleClass{
public static $var = 'This is Parent';
public function getVar(){
return self::$var;
}
}
class ExtendClass extends SimpleClass{
public static $var = 'This is Child';
public function getParentVar(){
return parent::getVar();
}
public function getChildVar(){
return self::$var;
}
}
$obj = new ExtendClass();
echo $obj->getParentVar();// Prints 'This is Parent'
echo $obj->getChildVar();// Print 'This is Child'
Это сработало, но как мы можем нестатически получить доступ к переменной родительского класса через метод getVar () класса Parent.
Если дочерний класс явно не создаст резервную копию исходного значения перед его редактированием, вы не сможете получить доступ к родительская ценность члена класса, так как нет родительская ценность. Код дочернего и родительского класса разделяют так же переменная.
Других решений пока нет …