PHP/Programmazione/Funzioni personalizzate

Wikibooks, manuali e libri di testo liberi.
Indice del libro

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[modifica]

La 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[modifica]

In 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[modifica]

Una 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