$pippo = 'pluto';
$paperino = &$pippo;
// $paperino diventa alias di $pippo, non un' altra variabile ...
$paperino = 'minnie';
echo $pippo; // stampera' minnie
serve a non sprecare inutilmente memoria con copie di copie di variabili, semplicemente alloca un nome alternativo che fara' riferimento allo steso indirizzo di memoria, senza creare quindi 2 stringhe differenti come ad esempio:
$pippo = 'pluto';
$paperino = $pippo;
$paperino = 'minnie';
echo $pippo; // stampera' pluto perche' paperino non era un suo riferimento ma una sua copia
Ora questo puo' essere utile soprattutto quando hai a che fare con arrays, oggetti e tutti quei tipi di variabile consistenti che se copiati di continuo altro non fanno che rallentare ed appesantire il lavoro del server.
in una funzione invece:
codice:
function echoString( &$string ) {
echo $string;
}
serve ad evitare di appesantire il lavoro di deleting in garbage collection perche' sebbene una variabile all' interno di una funzione sia valida solo al suo interno, quindi teoricamente "dimenticata" a funzione completata, ricevere $string piuttosto che &$string ricreerebbe comunque al suo interno una copia, aumentando la memoria utilizzata inutilmente ed appesantendo comunque il lavoro del server.
NOTA BENE
se utilizzi il riferimento & per parametri di funzione devi passare una variabile e non una stringa ....
ESEMPIO:
echoString( "ciao mondo" );
dara' errore perche' &$string non avra' un riferimento orginario a cui appoggiarsi, percui dovrai usare una variabile ...
$ciaoMondo = "ciao mondo";
echoString( $ciaoMondo );
non dara' errore ma avrai creato una variabile.
Se non avessi messo la variabile per riferimento invece $string sarebbe stata, dentro la funzione, una copia di quella passata, oppure la crazione della stessa.
ESEMPIO:
codice:
function echoString( $string ) {
echo $string;
}
echoString( "ciao mondo" ); // $string sara' creazione di variabile
echoString( $ciaoMondo ); // $string sara' copia di ciaoMondo
Secondo me ti conviene utilizzare sempre, dove e' possibile, i riferimenti a variabile, perche' male che vada, visto che o in un modo o in un altro una stringa o oggetto che sia viaggia con un riferimento ( che se non c'e' viene comunque creato ) puoi ovviare all' inconveniente di dover creare prima la variabile semplicemente usando una sintassi tipo:
echoString( $myString = "ciao mondo" );
creando e riferendo automaticamente il tutto alla variabile fuori funzione $myString.
Spero di aver chiarito