Referenzen innherhalb des Konstruktors
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
,
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
: