1

我尝试从同一类的方法内部调用类的成员变量。

如果我直接调用它不起作用,它需要使用$this。是否有一个原因?班级不能意识到我正在调用的变量属于它吗?

4

2 回答 2

0

$this-> 是类如何“意识到” var 属于它

于 2013-02-06T13:21:26.947 回答
0

原因或多或少只是因为 PHP 就是这样工作的。听起来您已经习惯了 Java,如果没有覆盖同一范围内的成员的局部变量,它会自动使用当前范围内的实例成员。PHP 不授予您这种自由:

class x {
    private $y = 'r';

    public function z() {
        $y = 'q';
        echo "$this->y\n"; //r
        echo "$y";         //q
    }
}

在 Java 中,您仍然必须this.y在上面的示例中使用来打印r,因为类成员名称已在本地被覆盖。试想一下,PHP 的成员在方法中总是被 void 覆盖。

于 2013-02-06T13:22:32.383 回答