Funzioni
Le funzioni – introduzione In ogni linguaggio di programmazione abbiamo la possibilità di creare e gestire le funzioni e questo avviene anche per il PHP. Cos’è una funzione? Ê un insieme di istruzioni o blocco di codice Note: La funzioni possono avere argomenti in input (arg1,arg_2, ... arg_n) e possono restituire un valore Le variabili definite all'interno di una funzione hanno come scope (contesto di validità) la funzione stessa. Quindi al di fuori della funzione non esistono.
Lo scopo di una funzione? Ê quello di incorporare un insieme di operazioni da eseguire e richiamare anche più volte. L’utilità di una funzione? L’utilità sta nel cosLGGetto riutilizzo del codice Incorporare in una funzione un insieme di operazioni ci consente di non dover riscrivere tutto il codice ogni volta che abbiamo la necessità di eseguire quelle operazioni: basta richiamare la funzione creata.
Che tipo di funzioni esistono in php? Esistono le funzioni predefinite di PHP e quelle definiELOL GDOO XWHQWH
Da cosa è composta una funzione? • dal blocco di codice che ne definisce il comportamento; • dai parametri; • dal valore di ritorno.
Come si richiama una funzione? La sintassi per richiamare una funzione e quindi eseguirne il codice è nome_funzione();
/*Sintassi senza parametri */
nome_funzione($parametro1, $parametro2);
/*Sintassi con parametri */
$OOÂśLQWHUQR GHOOH SDUHQWHVL YHUUDQQR LQGLFDWL L SDUDPHWUL GD SDVVDUH DOOD IXQ]LRQH VH SUHVHQWL RSSXUH ODVFLDUOH YXRWH 1el caso in cui la funzione UHVWLWXLVFD XQ YDORUH SRVVLDPR LQGLFDUH OD YDULDELOH R O DUUD\ FKH XWLOL]]HUj TXHVWR YDORUH $valore = nome_funzione();
In questo modo, DOOa variabile $valore YHUUj DVVHJQDWR il risultato della funzione.
Le funzioni personalizzate Oltre alle funzioni proprie di PHP, che vedremo piÚ avanti, possiamo crearne di personalizzate per far svolgere loro determinati compiti. Le funzioni definite dall’utente si richiamano allo stesso modo di quelle predefinite; si definiscono attraverso la parola chiave function seguita dal nome della funzione dalle parentesi che contengono i parametri (o argomenti); a seguire poi, contenute fra parentesi graffe, ci saranno le istruzioni che la funzione dovrà eseguire ad ogni chiamata. function calcolaSomma($intero1, $intero2){ ,
/* Qui bisogna inserire il codice della funzione */
}
Quanti parametri si possono passare ad una funzione? Una funzione può ricevere in entrata 0, 1 o n parametri. All’interno delle parentesi tonde che seguono il nome della funzione, devono essere indicati i parametri, separati da virgolH. Se la funzione non riceve nessun parametro, le parentesi saranno comunque presenti ma senza alcun valore all’interno. function calcolaSomma($intero1, $intero2){
function messaggio() {
/* Qui bisogna inserire il codice
* Qui bisogna inserire il codice
della funzione */
della funzione */
}
}
Parametri facoltativi o di default: A volte può eVVHUH QHFHVVDULR realizzare delle funzioni con parametri facoltativi, che non prevedono l’obbligo, quindi, di essere specificati al momento della chiamata della funzione. Questi vengono chiamati parametri facoltativi o di default. Se nella definizione di una funzione prevediamo un valore di default per un certo parametro, quel parametro diventerà facoltativo in fase di chiamata della funzione, e, nel caso manchi, la funzione utilizzerà il valore di default, altrimenti TXHOOR DVVXQWR LQ SUHFHGHQ]D.
Per impostare un valore di default per un parametro, basta specificarne il valore nelle parentesi che contengono la definizione degli argomenti: function datiUtente($nome, $cognome, $indirizzo = “Indirizzo non specificato”){ echo $nome . “ - ” . $cognome .“ - ” . $indirizzo ; }
datiUtente(“Mario”, “Rossi”, “via roma, 11”); datiUtente(“Mario”, “Rossi”);
//Stamperà i valori: Mario – Rossi - via roma, 11 //Stamperà i valori: Mario – Rossi - Indirizzo non specificato
Note sui parametri: Una funzione può essere richiamata da uno script usando dei nomi di variabile diversi da quelli usati nella funzione stessa; questo perché non c'è nessuna relazione tra i nomi degli argomenti (parametri) che la funzione utilizza e quelli che vengono indicati nella chiamata. La corrispondenza fra gli argomenti viene determinata solo dalla posizione in cui vengono indicati. $valore = calcolaSomma ($prezzo, $iva);
/* Richiamo di una funzione con parametri */
function calcolaSomma($intero1, $intero2){
/* Definizione della funzione */
/* Qui ci andrà il codice della funzione */ }
L’ambito o scope delle variabili in una funzione: Le variabili definite e utilizzate in una funzione esistono solo all'interno della funzione stessa. Viceversa, le variabili usate dallo script principale non vengono viste dalle funzioni. Le variabili utilizzate all'interno di una funzione si chiamano variabili locali. Le variabili utilizzate dallo script principale, invece, sono dette variabili globali. Se una funzione ha bisogno di OHJJHUH una variabile, basta includerla tra i parametri in entrata. Tuttavia, esiste una possibilità , per consentire ad una funzione di vedere una variabile globale, dichiarandola attraverso l'istruzione global.
L’uso dell’istruzione global è fortemente sconsigliato, perché fa perdere chiarezza allo script e alla funzione stessa. Di seguito alcuni esempi: function stampa($a) { echo $a; } $a = 'ciao a tutti'; stampa($a); $stringa = 'ciao a tutti'; stampa($stringa);
//Stamperà 'ciao a tutti' perché gli è stato passato questo valore //Stamperà 'ciao a tutti' perché gli è stato passato questo valore; $a è il nome della variabile locale della funzione che viene richiamata per la stampa
function stampa($a) { echo $c; } $a = 'ciao a tutti' $c = 'sono Mario'; stampa($a); //Stamperà '' perché la funzione fa riferimento a $c, che però all’interno della stessa non è stata definita, né passata come parametro
In che modo indico il termine di una funzione? L'istruzione return rappresenta il termine della funzione, restituendo quindi il controllo allo script nel punto in cui la funzione è stata chiamata. L'istruzione return è molto importante perché viene utilizzata anche per far restituire uno o più valori alla funzione. function calcolaSomma($intero1, $intero2){ /* Qui bisogna inserire il codice della funzione */ return;
}
// Con l’istruzione return termino l’esecuzione della stessa
In che modo una funzione può restituire dei valori? Come detto, una funzione restituisce dei valori allo sFript che l’ha chiamata attraverso l’istruzione return, che restituisce i valori e conclude l’esecuzione della funzione function calcolaSomma($intero1, $intero2){
function controllo ($a) {
/* Qui bisogna inserire il codice
/* Qui bisogna inserire il codice
della funzione */
della funzione */
// Con return restituisco dei valori
//Con return restituisco dei valori return true;
return $somma; }
}
In che modo una funzione può restituire più valori? La sintassi di PHP ci consente di restituire una sola variabile, ma è possibile far restituire ad una funzione più di un parametro utilizzando un array (gli array verranno trattati in altre lezioni di questo corso). Di seguito un esempio di una funzione che riceve un numero e restituiVFH il suo doppio, il suo triplo e il suo quintuplo: function multipli($num) { $doppio = $num * 2; $triplo = $num * 3; $quintuplo = $num * 5; $ris = array($doppio, $triplo, $quintuplo); return $ris; }
Lo script principale dovrà poi sapere che tale funzione restituisce un array e trattarlo di conseguenza per prenderne i dati. In casi di funzioni che restituiscono array viene spesso utilizzata la funzione predefinita PHP list(): questo costrutto permette di organizzare gli elementi di un qualsiasi array in una serie di variabili passate tra parentesi. Esempio: list($primo, $secondo, $terzo) = multipli(5); //$primo avrà valore 10 //$secondo avrà valore 15 //$terzo avrà valore 25
FINE LEZIONE