2014-07-27 26 views
2

使用操作我看到這個代碼:PHP - >級聯

public function query($query) 
    { 
     $full_query = $this->link->query($query); 
     if($this->link->error) 
     { 
      $this->log_db_errors($this->link->error, $query); 
      return false; 
     } 
     else 
     { 
      return true; 
     } 
    } 

包含在一個類定義。 請解釋一下這種代碼的含義:a->b->c。我知道使用a->b訪問實例化類的方法或屬性時。但無法理解如何解釋(「閱讀,理解,翻譯」)a->b->c

+1

它的意思完全一樣,就像'$ foo [33]'在概念上與$ foo [33] [44]'一樣。 –

回答

6

這意味着對象a的屬性b也是一個對象。所以你得到了對象a的屬性b的屬性c。

class a { 
    public $b; 

    function __construct() { 
     $this->b = new b; 
    } 
} 

class b { 
    public $c; 

    function __construct() { 
     $this->c = 'Hello'; 
    } 
} 

$a = new a; 

echo $a->b->c; // outputs Hello. 
+0

非常感謝;你和「頭衝刺」。所以還有一個問題涉及到這個問題。這條鏈可以多久?因此:.......對象的....屬性的財產屬性。 – user3881615

+0

你通常不會看到超過4個,但沒有限制(至少不是我所知道的)。如果你需要超過4個,你做錯了什麼。要回答你的其他問題,如果屬性是一個對象,屬性可以擁有一個屬性。 –

+0

爲了更清楚我最後一個問題:我們可以聲明一個類的屬性是另一個類的對象嗎?聽起來像瘋狂的世界;我們不知道誰是第一個人:雞蛋還是雞...... – user3881615

0

對象a有一個屬性b,它本身就是一個具有c作爲方法或屬性的對象。根據發佈的代碼$ this,您正在查看的源代碼的對象具有一個屬性 - 鏈接 - 即對象。由於鏈接也是一個對象,它可以(並且確實)具有屬性,其中兩個屬性是查詢和錯誤。

+0

非常感謝;你和「頭衝刺」。所以還有2個與這個主題相關的問題。這條鏈可以多久?因此:.......對象的....屬性的財產屬性。而且,財產可以擁有財產嗎?我認爲只有一個類/對象具有屬性和方法/成員。我對這種混合物感到困惑。也許可以推薦一本很好的教程書來闡明這個主題。 – user3881615