为什么这个简单的代码会产生'Undefined variable:bar'

Nic*_*pat -1 php php-5.4

class A {
    protected $bar = 'bar';
    public function foo() {
        echo $this->$bar;
    }
}

$a = new A();
$a->foo();
Run Code Online (Sandbox Code Playgroud)

令人难以置信的是,这不起作用.我来自C++和C#,所以我可能对PHP不了解.

Jas*_*ary 6

为什么这个简单的代码会产生'Undefined variable:bar'

因为PHP在评估$bar之前尝试评估变量$this->.由于没有$bar变量,因此会产生通知.

删除$前面的$bar:

echo $this->bar;
Run Code Online (Sandbox Code Playgroud)

我建议您阅读文档的变量变量部分以及OOP基础知识.