2013-11-15 47 views
-1
class A { 
    protected $bar = 'bar'; 
    public function foo() { 
     echo $this->$bar; 
    } 
} 

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

这是令人难以置信的,我不介意这是行不通的。我来自C++和C#,所以它可能是我不了解PHP的东西。为什么这个简单的代码产量'未定义的变量:酒吧'

+0

改变之前用符号$'回声$此 - > $ bar;''echo $ this-> bar;' – asprin

+0

http://php.net/manual/en/language.oop5.basic.php – kunal

回答

2

当您访问会员时,您只需在this之前的美元符号;即是这样,而不是访问它:

echo $this->bar; 
6

为什么这个简单的代码的成品率“未定义的变量:栏”

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

$bar前取下$

echo $this->bar; 

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

+0

我很好奇,为什么动态语言暗示特定的顺序的评价? –

+1

它并不意味着评估的具体顺序,更多的是变量变量。自从您注意到来自C++之后,我提到了它。这比PHP更静态。尽管如此,我已经调整了我的答案。 –

0

试试这个

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

当使用$这则couln't变量$this->$variable$this->variable;

相关问题