2010-01-19 10 views
5

Ich verwende 'dieses' Keyword für eine lange Zeit. Aber wenn jemand mich fragt, um es zu erklären, bin ich verwirrt, wie man es erklärt. Ich weiß, dass ich dies in einer Methode der Klasse verwenden kann, um auf jede Variable und Methode derselben Klasse zuzugreifen.Wie erklärt man "dieses" Keyword auf die beste und einfachste Art und Weise?

class MyClass{ 

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

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

    } 

Ist es ein Objekt einer Klasse, die wir nicht brauchen, zu initialisieren und kann nur innerhalb der Klasse oder irgendetwas anderes verwendet werden. Wie erklärt man?

Dank

+1

Nach einiger Zeit ist die Antwort mit den meisten Stimmen angenommen. – NAVEED

+0

Hier ist ein schöner Artikel zu diesem Thema ** [Mit dem Schlüsselwort "this" in PHP] (http://www.webdevelopmentbits.com/ using-this- in-php) ** – rahul

Antwort

13

Eine Klasse ist eine Form für ein Objekt: Sie gibt an, wie das Objekt aussieht (Variablen) und was es tun kann (Funktionen).

Wenn Sie eine Klasse instanziieren: Sie erstellen ein Objekt. Wenn Sie die Klasse erstellen, können Sie mit "this" auf das Objekt selbst verweisen. Aus diesem Grund können Sie das "Dies" nicht festlegen, da es sich auf das Objekt bezieht. Es ist eine spezielle, schreibgeschützte Variable.

+5

Es ist eine spezielle, schreibgeschützte Variable, die verwendet werden kann, um auf das Objekt selbst zu verweisen. Ist es richtig ? – NAVEED

+0

Ja, das stimmt. – Pindatjuh

5

this verweist auf die aktuelle Objektinstanz einer Klasse.

this ist ein impliziter Parameter, der an die Methoden einer Klasse übergeben wird: Er ist auf eine Methode beschränkt und ermöglicht den Zugriff auf alle Objektmitglieder.

+1

Wahrscheinlich nicht basisch genug, aber das ist die technisch korrekteste Antwort. –

2

kurz: $this können Sie auf die Objektvariablen zugreifen (und Methoden) Edit: innerhalb der Klasse :) Edit 2: (aber nicht in statischen Methoden der Klasse): D

+3

innerhalb der Klasse :) – NAVEED

+0

korrigiert;) thx mate – dfens

+0

aber nicht in statischen Methoden der Klasse :)) – NAVEED

2

Wie Ihr Name suggeriert, dass Instanzmethoden auf Instanzen einer Klasse arbeiten. Woher wissen sie, auf welchem ​​zu operieren ist? Das ist, was der this Parameter für ist.

Wenn Sie eine Instanzmethode aufrufen, übergeben Sie wirklich unsichtbar einen zusätzlichen Parameter: das Objekt, auf das sie aufgerufen werden soll. Zum Beispiel, wenn Sie diese:

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

und rufen Sie $some_basket->a(), hinter den Kulissen sind Sie eigentlich so etwas wie Basket::a($some_basket) aufrufen. Jetzt weiß a(), welche Basket Sie arbeiten möchten. Dieser spezielle Parameter bezieht sich auf this: das aktuelle Objekt, mit dem Sie es zu tun haben.

1

Eine Klasse ist eine Vorlage oder ein "Die" für ein Objekt.

Verwenden Sie das klassische 'Fahrrad' Beispiel. Es gibt viele huffy Bikes da draußen. Wir haben jedoch ein Fahrrad kreiert, und wir können das "this" -Schlüsselwort verwenden, um auf "dieses" Fahrrad zu verweisen.

In einem eher technischen Sinne ist eine Klasse eine Vorlage für ein Objekt, das instanziiert wird. Zur Laufzeit, nachdem ein Objekt instanziiert wurde oder eine Instanz von sich selbst erstellt hat, können wir das Schlüsselwort "this" intern verwenden, um auf die Instanz zu verweisen, die diese Methode ausführt.

2

Mehrere Leute haben es in ähnlichen Begriffen erklärt, aber ich dachte, ich würde hinzufügen, dass wenn ich mit Leuten spreche, die mit objektorientierter Programmierung nicht vertraut sind, dass die Klassendefinition die Blaupause ist, wie für ein Haus, und "das" ist das eigentliche Haus, mit dem du gerade arbeitest. Es könnte andere Häuser geben, die genau gleich aussehen, aber dies ist das spezifische Objekt (Haus).