object-oriented PHP 中的变量可见性

Variable visibility in object-oriented PHP

如果 属性 在 child class 中定义,属性 是否在 parent class 的方法中可用?我知道 parent 的属性被 child 继承,但是 child 的属性在 parent 中可用吗?例如:

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

Class 扩展非常简单:如您所料,您的对象将包含所有方法。此外,任何 public 变量都会在那里,按优先顺序 (子变量可以覆盖父变量)。

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

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