&
Von &$this
überall entfernen , es wird nicht benötigt. Tatsächlich denke ich, dass Sie &
diesen Code überall entfernen können - er wird überhaupt nicht benötigt.
Lange Erklärung
PHP ermöglicht die Übergabe von Variablen auf zwei Arten: "nach Wert" und "nach Referenz". Erster Weg ("nach Wert"), Sie können sie nicht ändern, anderer zweiter Weg ("nach Referenz") können Sie:
function not_modified($x) { $x = $x+1; }
function modified(&$x) { $x = $x+1; }
Beachten Sie das &
Schild. Wenn ich modified
eine Variable aufrufe, wird sie geändert, wenn ich sie aufrufe not_modified
, nachdem sie zurückgegeben wurde, ist der Wert des Arguments der gleiche.
Ältere Versionen von PHP können das Verhalten von modified
mit simulieren, not_modified
indem Sie Folgendes tun : not_modified(&$x)
. Dies ist "Anrufzeit als Referenz". Es ist veraltet und sollte niemals verwendet werden.
Wenn Sie in sehr alten PHP-Versionen (lesen Sie: PHP 4 und früher) Objekte ändern, sollten Sie diese als Referenz übergeben, also die Verwendung von &$this
. Dies ist weder notwendig noch empfehlenswert, da Objekte immer geändert werden, wenn sie an function übergeben werden, dh dies funktioniert:
function obj_modified($obj) { $obj->x = $obj->x+1; }
Dies würde sich ändern $obj->x
, obwohl es formal "nach Wert" übergeben wird, aber was übergeben wird, ist das Objekthandle (wie in Java usw.) und nicht die Kopie des Objekts, wie es in PHP 4 war.
Dies bedeutet, dass Sie, es sei denn, Sie tun etwas Seltsames, fast nie ein Objekt übergeben müssen (und somit als $this
Referenz, sei es zur Anrufzeit oder auf andere Weise). Insbesondere benötigt Ihr Code es nicht.