2016-04-22 6 views
0

Jedes Mal, wenn ich eine Instanzvariable verwenden möchte, muss ich die Pseudovariable $ this verwenden, bin ich richtig? Und wenn das Objekte mit Methoden sind, muss ich sie immer noch benutzen. Also, wenn ich wie ein Beispiel haben so:

class myClass{ 
    private $thingOne; 
    private $thingTwo; 

    public function __construct($thingOne,$thingTwo){ 
     $this->thingOne = $thingOne; 
     $this->thingTwo = $thingTwo; 
    } 
} 

Und dann fange ich das Hinzufügen Methoden myClass muss ich eingeben Dinge beginnen, wie:

$this->thingOne->doSomething($this->thingTwo->doSomethingElse()); 

Aber ich würde viel lieber ein:

$thingOne->doSomething($thingTwo->doSomethingElse()); 

Ich finde nur, dies zu schreiben-> die ganze Zeit nervig zu sein. Kann man nicht einfach davon ausgehen, dass ich die Instanzvariablen verwende, die ich ihm gegeben habe? Mein Code endet damit, dass dies das dies das dies das dies überall ist.

Konnte ich es in etwas kürzeres umbenennen? $ t oder etwas?

+5

'$ this' ist eine Referenz auf das aktuelle Objekt und kann nicht umbenannt werden. Sie können Ihre eigene Referenzvariable erstellen, müssen dies jedoch in jeder Methode tun. Du solltest also '$ this' verwenden, sei nicht so faul. –

+0

Und wenn Sie folgendes benötigen: $ this-> thingOne-> doSomething ($ this-> thingTwo-> doSomethingElse()); in Ihrem Objekt, das ist wahrscheinlich ein schlechtes Design oder Implementierung. –

+0

$ dies ermöglicht auch die Unterscheidung zwischen Instanzvariable und einer lokalen Variablen für eine Funktion ... – Zimmi

Antwort

1

$this ist eine Referenz auf das aktuelle Klassenobjekt und kann nicht umbenannt werden. Sie könnten Ihre eigene Referenzvariable erstellen, aber Sie müssten sie in jeder Methode deklarieren, was sie ineffizient macht. Stattdessen sollten Sie nur regelmäßig $this verwenden.

Verwandte Themen