2017-08-18 4 views
0
class ClassOne 
{ 
    private $foo = null; 

    public function __construct() 
    { 
     $this->foo = new ClassTwo(); 
    } 

    public function doStuff() 
    { 
     $bar = &$this->foo->someVariable; 
    } 
} 

Ich weiß, dass $this bezieht sich auf das aktuelle Objekt, und & ist ein Referenzsymbol für die ursprüngliche Variable ändern.

Was bedeutet &$this?

+1

Wenn '$ bar = & $ foo' für Sie sinnvoll ist, warum wäre' $ bar = & $ this' anders? – zzzzBov

+7

Beachten Sie, dass das '&' gilt für alles auf der rechten Seite, also gibt es einen Verweis auf $ this-> foo-> someMethod', nicht '$ this'. – trincot

+0

Was versuchst du zu erreichen? Sie speichern einen Verweis auf '$ this-> foo-> someMethod' in' $ bar' und ich frage mich, was Sie nicht verstehen. – k0pernikus

Antwort

0

Dank @ k0pernikus und @trincot zur Klärung, dass & auf die gesamten So wollte der ursprüngliche Autor ändern someVariable in $this->foo->someVariable$this->foo->someVariable

bezieht. Da es ausführlich war, wies er die Referenz $bar zu.

Dies wurde jedoch in PHP4 getan. Es muss einen besseren Weg geben, dies in PHP5 zu schreiben.

+0

Wenn '$ someVariable' ein Objekt enthält, dann wird die Referenz nicht benötigt (und nicht einmal nützlich). Ansonsten gibt es keinen besseren Weg, um es in PHP 5 oder PHP 7 zu schreiben. – axiac