PHP在子类中重写后通过扩展类访问父类变量

时间:2015-01-02 15:36:49

标签: php oop inheritance override

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

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,在那个上下文中$这只能访问被覆盖的$ 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'

它有效,但我们如何通过Parent类的getVar()方法非静态地访问父类变量。

1 个答案:

答案 0 :(得分:2)

除非子类在编辑之前明确备份原始值,否则您无法访问类成员的父级值,因为没有' ta 父母的价值。无论是孩子还是父母班级。代码共享相同的变量。