面向对象PHP中的变量可见性

时间:2015-03-10 10:38:39

标签: php oop

如果在子类中定义了属性,那么父类的方法中是否可以使用该属性?我知道父母的属性是由孩子继承的,但父母可以使用孩子的属性吗?例如:

class My_Parent {
    public function echoVar() {
        echo $this->var;
    }
}

class My_Child extends My_Parent {
    public $var = 'Henry';
}

$obj = new My_Child;
$obj->echoVar(); // Henry or 'undefined'?

1 个答案:

答案 0 :(得分:0)

类扩展非常简单:您的对象将包含所有方法,如您所期望的那样。此外,任何公共变量都将存在,按优先顺序(子变量可以覆盖父变量)。

在您的情况下,您的Parent正在定义一种方法,该方法将尝试来查找名为$var的变量,该变量确实存在于子类中!一切都正常,亨利回来了。沙箱在这里:http://sandbox.onlinephpfunctions.com/code/2eb0b764c2be94755ce300deeaa2ad0714d82bcf

但是,请在下次运行您的代码。好的?所有这些都可以在不必提出问题的情况下完成,并且可以节省每个人的时间。