La creazione di riferimenti con costruttori può condurre a risultati
confusi. Questa sezione in stile Tutorial vi aiuterà ad evitare problemi.
Verifichiamo se c'è una differenza fra $bar1
che è stato creato usando l'operatore =
e $bar2 che è stato creato usando
l'operatore di riferimento
=& ...
Apparentemente non c'è differenza, ed in effetti questo
è molto significativo: $bar1 e
$globalref[0] _ NON _ sono riferimenti,
ma sono due variabili diverse. Questo succede perché "new"
non restituisce per default un riferimento, ma restituisce una copia.
Nota:
Non c'è perdita di prestazioni (da php 4 in su si usa il riferimento)
ad istanziare copie per riferimento. Al contrario spesso è meglio
lavorare con copie istanziate per riferimento, perché creare copie
reali richiede un certo tempo, mentre creare riferimenti virtuali
è immediato, (a meno che non si parli di un grande array o un
oggetto che viene modificato in modo successivo, allora sarebbe
saggio usare i riferimenti per cambiargli tutti i valori
simultaneamente).
Per dimostrare quello che è scritto sopra guardate il codice qui sotto.
Un esempio finale, prova a farvi capire.