class A {
protected $bar = 'bar';
public function foo() {
echo $this->$bar;
}
}
$a = new A();
$a->foo();
这是令人难以置信的,我不介意这是行不通的。我来自C++和C#,所以它可能是我不了解PHP的东西。为什么这个简单的代码产量'未定义的变量:酒吧'
class A {
protected $bar = 'bar';
public function foo() {
echo $this->$bar;
}
}
$a = new A();
$a->foo();
这是令人难以置信的,我不介意这是行不通的。我来自C++和C#,所以它可能是我不了解PHP的东西。为什么这个简单的代码产量'未定义的变量:酒吧'
当您访问会员时,您只需在this
之前的美元符号;即是这样,而不是访问它:
echo $this->bar;
为什么这个简单的代码的成品率“未定义的变量:栏”
因为PHP试图评估$this->
之前评估变量$bar
。由于没有$bar
变量,因此会产生通知。
在$bar
前取下$
:
echo $this->bar;
我建议你阅读的文档的Variable Variables部分以及OOP Basics。
我很好奇,为什么动态语言暗示特定的顺序的评价? –
它并不意味着评估的具体顺序,更多的是变量变量。自从您注意到来自C++之后,我提到了它。这比PHP更静态。尽管如此,我已经调整了我的答案。 –
试试这个
public function(){
echo $this->bar;
}
当使用$这则couln't变量$this->$variable
但$this->variable;
改变之前用符号
$
'回声$此 - > $ bar;''echo $ this-> bar;' – asprinhttp://php.net/manual/en/language.oop5.basic.php – kunal