2013-11-15 85 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;

相關問題