我尝试从同一类的方法内部调用类的成员变量。
如果我直接调用它不起作用,它需要使用$this。是否有一个原因?班级不能意识到我正在调用的变量属于它吗?
$this-> 是类如何“意识到” var 属于它
原因或多或少只是因为 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 覆盖。