2012-09-24 68 views
10

如何訪問PHP對象的屬性?訪問PHP對象屬性的語法是什麼?

此外,訪問對象的屬性與 $this->$property1$this->property1之間有什麼區別?

當我嘗試使用$this->$property1我得到以下錯誤:

'PHP: Cannot access empty property'.

PHP的documentation的對象屬性有一個評論,其中提到這一點,但意見並沒有真正深入講解。

+0

就拿本手冊頁面,而不是和尋找「變量屬性名稱」部分:http://php.net/manual/en/language.variables.variable.php(第一部分也許對你很有意思)(在你的答案中鏈接的頁面上找到,你應該更仔細地閱讀文檔) – hakre

+0

你失望與OOP?是的,你認識我 –

回答

6
  1. $property1 //特定變量
  2. $this->property1 //特定屬性

類上一般使用是沒有"$"否則你調用一個名爲$property1變量,可以採取任何價值。

例子:

class X { 
    public $property1 = 'Value 1'; 
    public $property2 = 'Value 2'; 
} 
$property1 = 'property2'; //Name of attribute 2 
$x_object = new X(); 
echo $x_object->property1; //Return 'Value 1' 
echo $x_object->$property1; //Return 'Value 2' 
9

$this->property1表示:

使用該對象並獲取綁定到該對象

$this->$property1變量property1表示:

評估字符串$ property1和使用結果獲得了$命名變量property1綁定到此對象的結果

+0

另一個SO用戶可以將PHP手冊頁變成答案。恭喜! – hakre

+0

這是諷刺嗎? –

+0

@hakra鏈接到手冊通常不被認爲是答案,因爲這些鏈接往往會改變......但是,我同意引用和/或鏈接到源將是一個更好的答案變種 –

3

property1是一個字符串,而$property1是一個變量。因此,當訪問$this->$property1 PHP查找名爲$property1的變量的內容,並且因爲它(可能)不存在,所以它是空的,所以這就是爲什麼你會得到Cannot access empty property錯誤。