gpt4 book ai didi

PHP在子类中覆盖后通过扩展类访问父类变量

转载 作者:搜寻专家 更新时间:2023-10-31 21:08:27 24 4
gpt4 key购买 nike

如果子类在扩展后覆盖它,我们如何通过子类访问原始父类变量。

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()方法非静态地访问父类变量。

最佳答案

除非子类在编辑它之前明确备份原始值,否则您无法访问类成员的父值,因为没有父值 .子类和父类的代码共享相同变量。

关于PHP在子类中覆盖后通过扩展类访问父类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27744550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com