Referenzen innerhalb des Konstruktors können zu verwirrenden
Resultaten führen. Dieser Abschnitt hilft, Probleme zu vermeiden.
Prüfen wir, ob zwischen $bar1, die mittels
dem Operator zum Kopieren = erstellt wurde,
und $bar2, die mittels dem Referenzoperator
=& erstellt wurde, ein Unterschied besteht...
Scheinbar besteht kein Unterschied, aber tatsächlich existiert ein
signifikanter: $bar1 und
$globalref[0] sind NICHT referenziert, d.h. sie
sind NICHT die selbe Variable. Das kommt daher, dass "new" nicht
automatisch eine Referenz, sondern eine Kopie zurückgibt.
Anmerkung:
Das zurückgeben von Kopien anstatt von Referenzen stellt keinen
Performanceverlust dar (da PHP 4 und höher Reference Counting
verwendet). Andererseits ist es sehr oft besser, einfach mit Kopien
anstatt mit Referenzen zu arbeiten, da die Erstellung von Referenzen
etwas Zeit in Anspruch nimmt, während das Erstellen von Kopien so gut
wie keine Zeit braucht (sofern keine von ihnen ein großes Array oder
Objekt ist, und eines davon geändert wird und das/die andere/n
nachträglich. In diesem Fall wäre es besser, Referenzen zu verwenden,
um sie alle gleichzeitig zu ändern).
Um das zuvor geschriebene zu beweisen, sehen wir uns den folgenden Code an.
Ein anderes, letztes Beispiel zum Verständnis: