RSS Feed Seguiteci su Twitter! Seguiteci su Facebook!
NEWS: Questo Blog e' rimasto inattivo per più di 18 mesi , quindi possono esserci link non funzionanti o altre problematiche dovute alla mancata manutenzione. Cosa vi piace o non in questo BLOG?, scrivete tutte le vostre recensioni in questa area commenti, provvederemo immediatamente a cancellare il Blog o migliorarlo nelle sue aspettative. Grazie.

Lezione21: Scrivere funzioni personalizzate


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;
    }
  }
} 
Come vediamo, la definizione della funzione avviene attraverso la parola chiave 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
Avete visto che abbiamo chiamato la funzione usando dei nomi di variabile diversi da quelli usati nella funzione stessa: la funzione infatti usa $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!