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

时间:2013-11-15 14:21:56

标签: php php-5.4

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

$a = new A();
$a->foo();

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

3 个答案:

答案 0 :(得分:6)

  

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

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

删除$前面的$bar

echo $this->bar;

我建议您阅读文档的Variable Variables部分以及OOP Basics

答案 1 :(得分:2)

当您访问会员时,您只需要this之前的美元符号;即改为访问它:

echo $this->bar;

答案 2 :(得分:0)

试试这个

public function(){
  echo $this->bar;
}

使用$ this时,请不要在变量$之前使用符号$this->$variable 但是$this->variable;