2014-07-25 19 views
1

我知道這個操作是如何工作的( - >),但我只是好奇。正如你可以從下面的代碼中看到的,當你在一個類中使用它時,它就像這樣$this->$name,但是在類之外它就像$a->attribute。那麼爲什麼第一個使用兩個美元符號($),但第二個只使用一個美元符號呢?我很好奇。我可以忽略它,但它讓我感到緊張。使用此操作 - >內部和外部類

<?php 
    class classname 
    { 
     public $attribute; 
     public function __get($name) 
     { 
      return $this->$name; 
     } 
    } 
    $a = new classname(); 
    $a->attribute = "Hello"; 
    echo $a->attribute; 
?> 

預先感謝您

+1

因爲在魔法'__get()'方法中,'$ name'的值是___dynamic___ –

+0

'$ this - > $ name'實際上是一個[variable variable]的形式(http://php.net) /manual/en/language.variables.variable.php)來動態訪問對象屬性。如果輸入'$ name'是''foo'',則會導致'$ this-> foo'或'bar''到'$ this-> bar'。 –

回答

0

$this -> $name其中$this包含該類的對象,$name您已經過去的價值,所以你可以聲明如下$this->$name的。

$a->attribute它已被聲明,因此您正在訪問具有屬性的對象。

如果使用未初始化的屬性,則可以直接使用$this->name

+0

非常感謝。我現在明白了^ _ ^ –