Ettore Delprino

Web oriented software developer

Portfolio


Ettore Delprino nasce a Chiavari nel 1989, cresciuto con la passione dell'informatica e l'amore per la natura. Pratica ormai da parecchi anni il free-climbing. È iscritto al corso di Ingegneria Informatica dell'Unversità degli Studi di Genova.

Contatti

PHP5 : Passaggio per riferimento

13 giugno 2011

Fino alla versione 4 i dati negli script php erano passati per valore. Ciò comportava un grande spreco di tempo e di memoria. Nel PHP5 finalmente sono stati introdotti i reference, complice anche l’aumento di script OOP.

Nel passaggio per valore la funzione crea una copia dell’argomento che poi userà per i calcoli. Finché si tratta di dati semplici come interi, piccole stringhe, float ciò non comporta alcun problema perché si tratta di copiare pochi bytes, se invece si sta lavorando con dati complessi come Array, Map od Oggetti questo inizia ad essere un fattore rilevante per le prestazioni dell’applicazione.

Nel PHP5 è stato introdotto quindi l’operatore “&” che consente di passare i dati tramite reference. Non si tratta più si una semplice copia ma si crea un alias e si lavora sull’oggetto stesso.

function addOne(&$arg){ $arg++; }
$a=10;
addOne($a); //Adesso $a vale 11

La funzione addOne crea un alias dell’oggetto passato per riferimento. In questo modo quindi si avranno due “etichette” che punteranno alla stessa locazione di memoria. Lavorando su una si modificherà anche l’altra. Quindi addOne non fa altro che aumentare di uno la variabile $a (chiamata semplicamente in un modo differente).

Tutto ciò comporta pregi e difetti. Sicuramente se si lavora con dati di grande dimensioni come array, oggetti, array chiave-valore, array di oggetti, ecc, cosa che capita sempre più spesso se si utilizzano framework, si ha un notevole risparmio di tempo e soprattutto di memoria. Bisogna fare attenzione però a non modificare l’oggetto involontariamente perché si sta lavorando su quello “vero” e non più su una copia. Invece se lo scopo della funzione è proprio quello di andare a modificare l’oggetto passato si avrà un doppio miglioramento perché si eviterà tutta la parte di copia temporanea durante la chiamata della funzione e tutta la parte di riassegnazione dei valori di ritorno.

Aspetta! c'è dell'altro!

  • Fans e FanPage, questo è il problema
  • L’importanza della cache
  • Perché utilizzare un framework PHP Standard
  • Una morte sconosciuta
  • Hai trovato l'articolo interessante?

    Lascia un commento!