PHP/Programmazione/Funzioni personalizzate
In ogni linguaggio di programmazione esiste la possibilità di creare le proprie funzioni personalizzate; ciò è possibile ovviamente anche in PHP. La comodità della creazione di funzioni personalizzate risulta evidente nei casi di applicazioni complesse (nelle quali le funzioni possono servire a spezzettare il programma in piccoli sottoprogrammi) o di operazioni compiute frequentemente. È utile inoltre creare anche vere e proprie funzioni nel senso matematico del termine per risolvere problemi che ricorrono spesso.
Definire una funzione
modificaLa definizione di una nuova funzione in PHP è la seguente:
function nome_funzione ($arg1, $arg2, ...) {
//istruzioni
}
Dove $arg1, $arg2
sono eventuali variabili che assumeranno i valori presi come parametri.
Impostare un valore di ritorno
modificaIn una funzione personalizzata per impostare il valore restituito dalla funzione si usa l'istruzione return
. La sua sintassi è
return espr;
Quando il motore PHP incontra questa funzione restituisce il valore di espr
e interrompe l'esecuzione del blocco della funzione tra parentesi.
Vediamo adesso un esempio che fa uso del comando return. Vogliamo realizzare un convertitore euro -> lire.
<?php
// 15 euro
$valuta = 15;
// definizione della funzione "converti"
function converti($euro)
{
// effettuo la conversione
$lire = $euro * 1936.27;
// restituisco il valore calcolato
return $lire;
}
// chiamo la funzione converti. Questa volta dobbiamo usare una
// variabile per raccogliere il valore restituito dalla funzione!
$vecchio_conio = converti($valuta);
echo "$valuta euro equivalgono a $vecchio_conio lire";
?>
Analizziamo la funzione "converti". Quando viene invocata riceve un parametro (la quantità di euro da convertire in lire) che viene memorizzata nella variabile $euro. La prima istruzione effettua la conversione vera e propria. Per far si che la funzione restituisca il risultato calcolato viene usato il comando return affiancato dalla variabile da restituire $lire.
Per utilizzare la funzione converti dovremo quindi specificare anche la variabile che raccoglierà il risultato restituito da tale funzione. Nel nostro esempio sarà la variabile $vecchio_conio a conservare tale valore.
Anche se il comando return è in grado di restituire una sola variabile è possibile far si che una funzione restituisca anche più di un valore attraverso un semplice espediente. E' sufficiente infatti impacchettare tutti i valori da restituire all'interno di un array e poi usare il comando return proprio con questo array.
Usare i parametri
modificaUna volta definita una funzione è possibile lavorare sui parametri indicati tra parentesi, che possono essere passati per valore o per riferimento, allo stesso modo con le variabili. Ad esempio:
function prova (&$param1, $param2) {
$param1 = $param2 + 5;
}
prova($var1, 3);
Dopo l'esecuzione della funzione la variabile $var1
conterrà così il valore 8. Si faccia ovviamente attenzione a passare come parametro una variabile e non un'espressione, perché altrimenti non è possibilie effettuare il passaggio per riferimento.
Si noti che una funzione personalizzata deve essere invocata necessariamente dopo la sua dichiarazione. Ad esempio:
$var1 = funzione_esempio();
function funzione_esempio() {
return "ciao!";
}
In questo caso il motore PHP restituirà un errore, in quanto la lettura dello script avviene in sequenza e la funzione funzione_esempio
non è ancora stata dichiarata nel momento in cui viene chiamata.
Parametri predefiniti
modificaÈ possibile inoltre prevedere che l'utente non passi alcun valore nel chiamare la funzione ed impostare dei valori predefiniti che deve assumere il parametro nel caso non venga specificato. Ad esempio:
function predef ($arg1, $arg2 = 10) {
return $arg1 + $arg2 ;
}
echo predef(23); //restituisce 33