2010-02-05 119 views
12

我在想,$this->name$this->$name之間有什麼區別? $this也必須嚴格命名爲這個或者它可以是任何東西?

回答

20

$this是保留的變量名稱,不能用於其他任何內容。它特別指向您當前正在工作的對象。您必須使用$this,因爲您不知道將分配哪個變量對象。

$this->name指當前類的變量name

$this->$name指的是類變量什麼的$name值。因此

$name = "name"; 
echo $this->$name; // echos the value of $this->name. 

$name = "test"; 
echo $this->$name; // echos the value of $this->test 
6

$這是在PHP中使用指向你正在使用它的類的當前實例中quoting保留名稱:

僞變量$this可用 當從 對象上下文中調用方法時。
$this是參考 到調用對象(通常是 對象到該方法所屬 但可能另一個目的,如果 方法是從第二個對象的 內靜態調用)。


使用$this->name,您使用的名稱當前對象的name訪問屬性。這意味着你將訪問哪些名字包含在$name局部變量的性質 -


當使用$this->$name,$名稱訪問屬性之前確定。

例如,對於代碼的這一部分:

$name = 'abc'; 
echo $this->$name; 

你會真正呼應了美國廣播公司財產的內容,如果你這樣寫:

echo $this->abc; 

做這件事時,你使用variable variables(引用)

類屬性可以由也可以使用變量屬性名稱訪問 。
可變屬性名稱將在 調用的範圍內解決,解析爲 。
舉例來說,如果你有 這樣的表達式$foo->$bar, 然後局部範圍將是$bar檢查 ,其價值將被用作 的$foo屬性的名稱。
這個 也是如果$ bar是一個數組 訪問。

+0

您的語法錯誤。用雙引號混合單引號是我們? (試圖修復它,你覆蓋了我) – 2010-02-05 05:26:17

+0

@查哈:呃,再次,早上太早^^謝謝你注意到:-) - 呵呵,我們都編輯了我的答案來糾正這個問題,我看到了:-D ;;我們也在同一時間編輯了我們的評論:-D – 2010-02-05 05:28:23

+0

如果我們編程,我們會被擊沉,因爲StackOverflow沒有註釋檢出/鎖:) – 2010-02-05 05:30:32

2

更新後彈出此問題。我喜歡這個問題,所以我想我會添加自己的差異例子。

class Test 
{ 
    public $bar = 'bar'; 
    public $foo = 'foo'; 

    public function __construct() 
    { 
     $bar = 'foo'; 

     $this->bar; // bar 
     $this->$bar; // foo 
    } 
} 
相關問題