Funzioni in PHP

L'utilizzo di funzioni è fortemente consigliato ogni qual volta si debba ripetere più volte una stesse serie di istruzioni, eventualmente su variabili diverse. Le ragioni sono sicuramente una migliore leggibilità del codice, una maggiore facilità nella manutenzione e una compattezza del codice.

In PHP la dichiarazione di una funzione è del tipo
function miafunzione(arg1, arg2, arg3=default3, ...)
{
... codice ...
}

Obbligatorie le parentesi graffe per la delimitazione del blocco di istruzioni che verrà eseguito all'invocazione della nostra funzioni. Si noti come ai parametri (opzionali) non sia necessario associare un tipo ma sia possibile invece indicare un valore di default nel caso non venga specificato il valore del parametro nell'invocazione. I parametri possono essere di ogni tipo, compresi quindi array e oggetti.

All'interno di una funzione riveste particolare importanza l'utilizzo del costrutto return ESPR dove ESPR può essere un espressione o una semplice variabile. L'istruzione (opzionale) di return permette di ritornare uno e un solo valore al chiamante, ovviamente quando si necessiti di avere come output della funzione diversi valori è possibile ritornare una variabile di tipo array che sarà poi gestita come tale dal chiamante, vediamo un esempio:
function miafunzione($a, $b)
{
$a = $a*10;
$b = $b*100;
return array($a,$b);
}

list($newa, $newb) = miafunzione(2,3);


Il passaggio dei parametri alla funzione può avvenire per valore (questo è il default), cioè la funzione crea internamente una copia della variabile passata e questa può essere modificata senza nessuna ripercussione sulla variabile originale, oppure per riferimento, tramite l'indicazione del simbolo & prima della variabile: in questo caso la funzione può modificare la variabile originale.
Questo codice può chiarire il concetto:

function quadrato($a)
{
  $a *= $a;
}
$b = 2;

quadrato($b);
print 'valore: $b='. $b ."
\n";

quadrato(&$b);
print 'riferimento: $b='. $b;


Al contrario di altri linguaggi, in PHP non si può utilizzare le variabili globali per gestire in modo implicito le chiamate per riferimento, questo perchè in PHP le variabili globali non sono visibili all'interno delle funzioni a meno che siano indicate esplicitamente come tali all'interno della funzione tramite il costrutto global.

All'interno di funzioni è inoltre possibile dichiare delle variabili come static aventi cioè valenza (scope) locale alla funzione ma durata (lifetime) globale, questo ci permette di mantenere i valori della variabile in dichiarazioni successive alla funzione senza però esporla alla possbilitò di modifica inavvertita da altre componenti del nostro programma, cosa che sarebbe invece possibile se la avessi dichiarata come globale, di seguito un esempio classico per illustrare il concetto di variabile statica;

function allunga()
{
   static $a='a';
   return $a.='a';
}
$a = "b";
print allunga()."\n
";
print allunga()."\n
";
print allunga()."\n
";
print $a;

Privacy Policy