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


Variable visibility in object-oriented PHP

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

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'?

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

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

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