Come abbiamo detto nella lezione precedente, oltre alle numerosissime funzioni incorporate in PHP abbiamo la possibilità di definire delle funzioni che ci permettono di svolgere determinati compiti in diverse parti del nostro script, o, meglio ancora, in script diversi, semplicemente richiamando la porzione di codice relativa, alla quale avremo attribuito un nome che identifichi la funzione stessa. Vediamo quindi ora come definire una funzione, fermo restando che, al momento di eseguirla, la chiamata si svolge con le stesse modalità con cui vengono chiamate le funzioni incorporate del linguaggio.
Immaginiamo, facendo il solito esempio banale, di voler costruire una funzione che, dati tre numeri, ci restituisca il maggiore dei tre. Vediamo il codice relativo:
function il_maggiore($num1, $num2, $num3) { if (! is_numeric($num1)) { return false; } if (! is_numeric($num2)) { return false; } if (! is_numeric($num3)) { return false; } if ($num1 > $num2) { if ($num1 > $num3) { return $num1; } else { return $num3; } } else { if ($num2 > $num3) { return $num2; } else { return $num3; } } }
function
,
seguita dal nome che abbiamo individuato per la funzione, e dalle
parentesi che contengono i parametri (o argomenti) che devono essere
passati alla funzione. Di seguito, contenuto fra parentesi graffe, ci
sarà il codice che viene eseguito ogni volta che la funzione viene
richiamata. Il nome della funzione deve essere necessariamente univoco,
questo significa che non è possibile definire due funzioni aventi lo
stesso nome.All'interno della funzione vediamo l'istruzione
return
; questa istruzione è molto importante, perchè termina la funzione
(cioè restituisce il controllo allo script nel punto in cui la funzione
è stata chiamata) e contemporaneamente determina anche il valore
restituito dalla funzione. Nel nostro esempio, i tre dati ricevuti in
input vengono controllati, uno dopo l'altro, per verificare che siano
numerici: in caso negativo (il test infatti viene fatto facendo
precedere la funzione is_numeric()
dal simbolo "!
" di negazione), la funzione termina immediatamente, restituendo il valore booleano false
.Una volta verificato che i tre valori sono numerici, vengono posti a confronto i primi due, e poi quello dei due che risulta maggiore viene posto a confronto col terzo, per ottenere così il maggiore dei tre, che viene infine restituito come risultato della funzione. Quando sarà il momento di eseguire questa funzione potremo quindi usare questo codice:
$a = 9;
$b = 8;
$c = 15;
$m = il_maggiore($a, $b, $c); // $m diventa 15
$num1
, $num2
, $num3
, mentre lo script che la richiama utilizza $a
, $b
, $c
.
È molto importante ricordare che non c'è nessuna relazione definita tra
i nomi degli argomenti che la funzione utilizza e quelli che vengono
indicati nella chiamata. Ciò che determina la corrispondenza fra gli
argomenti è, infatti, semplicemente la posizione in cui vengono
indicati: nel nostro caso, quindi, $a
diventerà $num1
all'interno della funzione, $b
diventerà $num2
e $c
diventerà $num3
.Avremmo potuto richiamare la nostra funzione anche passando direttamente i valori interessati, senza utilizzare le variabili:
$m = il_maggiore(9, 8, 15); // $m diventa 15 /* $m diventa FALSE, perchè il terzo argomento non è numerico e quindi * i controlli all'inizio della funzione bloccano l'esecuzione */ $m = il_maggiore(9, 8, 'ciao');
0 commenti:
Posta un commento
Proponi un'idea, segnalaci un problema.
Entra a far parte di CS3, pubblica i tuoi articoli.
Scrivi un commento!