2010-01-19 40 views
5

我長時間使用'this'關鍵字。但是當有人問我解釋它時,我很困惑如何解釋它。我知道我可以在類的方法中使用它來訪問同一類的任何變量和方法。如何以最簡單的方式解釋'this'關鍵字?

class MyClass{ 

     function MyMethod1(){ 
     echo "Hello World"; 
     } 

     function MyMethod2(){ 
     $this->MyMethod1(); 
     } 

    } 

它是一個類的對象,我們不需要初始化,只能在類或其他類中使用。如何解釋?

感謝

+1

經過一段合理時間後,大部分選票的答案都被接受。 – NAVEED 2010-01-26 17:44:14

+0

這是一篇很好的文章** [在PHP中使用關鍵字「this」](http://www.webdevelopmentbits.com/using-this-in-php)** – rahul 2010-01-19 14:18:38

回答

13

一個類是一個對象模型:它指定了對象的外觀(變量)以及它可以做什麼(功能)。

如果你創建一個類:創建一個對象。如果你創建了這個類,你可以使用「this」來引用這個對象。這就是爲什麼你不能設置「this」,因爲它與對象有關。這是一個特殊的只讀變量。

+5

它是一個特殊的只讀變量,可用於引用對象本身。這是對的嗎 ? – NAVEED 2010-01-19 14:21:17

+0

是的,它是正確的。 – Pindatjuh 2010-01-19 14:30:50

5

this引用類的當前對象實例。

this是一個傳遞給類方法的隱含參數:它的作用域是一個方法並允許訪問所有對象的成員。

+1

可能不夠基本,但這是在技​​術上是最正確的答案。 – 2010-01-19 14:51:20

2

短: $this,您可以訪問該對象變量(和方法)編輯:類中 :) 編輯2:(但不是在類的靜態方法):d

+3

內類:) – NAVEED 2010-01-19 14:22:08

+0

糾正;)thx隊友 – dfens 2010-01-19 14:26:03

+0

但在類的靜態方法:)) – NAVEED 2010-01-19 14:33:21

2

像他們的名字暗示,實例方法在實例上運行。他們如何知道在哪一個工作?這就是this參數的用途。

當你調用一個實例方法時,你真的無形中傳入了一個額外的參數:要調用它的對象。例如,當你有這樣的:

class Basket { 
    public function a() { 
    $this-> ...; 
    // ... 
    } 
    // ... 
} 

和你打電話$some_basket->a(),在幕後,你實際上調用類似Basket::a($some_basket)。現在a()知道你想要使用哪個Basket。該特殊參數是this引用的內容:您正在處理的當前對象。

1

一個類是一個模板或一個對象的'死'。

讓我們使用經典的「自行車」示例。那裏有許多自行車。但是,我們已經創建了一輛自行車,我們可以使用'this'關鍵字來指代'this'自行車。

從更技術性的角度來看,類是一個將被實例化的對象的模板。在運行時,在實例化對象或創建了自己的實例之後,我們可以在內部使用關鍵字「this」來引用運行該方法的實例。

2

有幾個人用類似的術語來解釋它,但是我想補充說,當向不熟悉面向對象編程的人們講話時,我解釋說類定義是藍圖,就像一個房子一樣,「this」是在那個時刻你正在與之合作的房子。可能有其他房子看起來完全一樣,但這是特定的對象(房子)。