In questa lezione vedremo cosโรจ una funzione e come possiamo creare delle funzioni personalizzate in PHP. Prima di entrare nel vivo, tuttavia, dobbiamo farci una domanda: cosโรจ una funzione?
Una funzione รจ una porzione di codice caratterizzata da una certa indipendenza ed in grado di assolvere un compito specifico allโinterno di un programma.
Mediante una funzione, di solito, si assolve un compito ben preciso che solitamente necessita di essere ripetuto piรน volte allโinterno del programma. Cosรฌ facendo, infatti, si snellisce il codice dellโapplicazione e viene a semplificarsi il lavoro dello sviluppatore.
Per fare un esempio si pensi al calcolo dellโIVA su un prezzo: la procedura per svolgere tale calcolo matematico รจ sempre la stessa e potrebbe essere richiesta in piรน punti di un programma. In circostanze come questa, quindi, la soluzione piรน logica รจ quella di incorporare la relativa procedura allโinterno di una funzione che potrร poi essere richiamata ogni volta che ce ne sarร bisogno.
Funzioni native vs. funzioni proprie
Una funzione si dice โnativaโ quando รจ incorporata nel linguaggio; si dice โpropriaโ o โpersonalizzataโ quando รจ definita dal programmatore allโinterno del codice di un programma.
Nel corso della nostra guida abbiamo giร incontrato diverse funzioni native di PHP come, ad esempio, la funzione header() e la funzione cookie() ma ovviamente ne esistono diverse centinaia per gli scopi piรน diversi (alcune delle piรน importanti funzioni native di PHP le vedremo nelle prossime lezioni).
Creare una funzione in PHP
Una funzione personalizzata in PHP รจ definita mediante la keyword function seguita dal nome della funzione e dallโelenco di eventuali parametri richiesti racchiusi tra parentesi tonda. Di seguito la sintassi per la creazione di una funzione:
function nome_funzione($arg1,$arg2,...) {
// ...
// ...
// ...
}
Si noti che รจ anche possibile creare funzioni senza alcun parametro, in tal caso le parentesi tonde dopo il nome resteranno vuote:
function nome_funzione() {
// ...
// ...
// ...
}
Gli argomenti elencati tra parentesi tonde sono obbligatori in quanto funzionali ellโesecuzione della procedura delegata alla funzione. Tuttavia รจ anche possibile prevedere argomenti facoltativi semplicemente prevedendo un valore di default (cioรจ un valore da utilizzare nel caso in cui non ne venga settato un altro):
function nome_funzione($arg1,$arg2,$arg3=false) {
// ...
// ...
// ...
}
// utilizzo
$var = nome_funzione(10,8);
// oppure
$var = nome_funzione(10,8,true);
Nellโesempio visto qui sopra la funzione ammette tre argomenti dei quali i primi due sono obbligatori mentre il terzo รจ facoltativo e qualora venga omesso avrร come valore false.
Allโinterno della nostra funzione (dove abbiamo messo i puntini, per intenderci) andremo scrivere una serie di istruzioni PHP sulla base delle regole e delle logiche che abbiamo visto sino ad ora allโinterno della nostra guida: potremo usare variabili, strutture condizionali, cicli e quantโaltro ci verrร utile.
Eโ importante sottolineare, tuttavia, che allโinterno della nostra funzione avremo a disposizone tutte le variabili ricevute in argomento e le variabili superglobali (come, ad esempio, $_GET, $_POST, $_SESSION, ecc.) mentre le variabili definite allโinterno del nostro programma (ma esternamente alla funzione) non saranno accessibili se non esplicitamente "importate".
Per utilizzare variabili esterne alla funzione si utilizza lโistruzione global seguita dal nome delle variabili (separate da virgola) che si desidera utilizzare allโinterno della funzione. Vediamo un esempio:
$nome = 'Mario';
$cognome = 'Rossi';
function scrivi_nome() {
global $nome, $cognome;
return $nome . ' ' . $cognome;
}
echo scrivi_nome();
Nellโesempio appena visto abbiamo incontrato lโistruzione return che รจ utilizzata per restituire il valore "calcolato" dalla nostra funzione. Utilizzando return il valore restituito allโinterno del programma puรฒ essere memorizzato allโinterno di una variabile. Tornando allโesempio visto poco sopra avremmo potuto fare:
$nome_completo = scrivi_nome();
Eโ bene precisare che quando si usa return si esce dalla funzione quindi, eventuale codice successivo ad un return non verrร elaborato. Vediamo un esempio:
function divisione($n1,$n2) {
if ($n2 == 0) return 'Non puoi dividere per zero!';
return ($n1/$n2);
}
// stampo il risultato
echo divisione(10/0);
Nellโeempio visto sopra non รจ stato necessario utilizzare un else in quanton il verificarsi della condizione ha prodotto il return che chiude la funzione.
Lโutilizzo di return, tuttavia, non รจ obbligatorio: se il risultato dellโelaborazione non necessitร di essere incapsulato in una variabile o nuovamente elaborato, nulla vieta di utilizzare un semplice echo (o altro comando o istruzione):
function divisione($n1,$n2) {
if ($n2 == 0) echo 'Non puoi dividere per zero!';
else echo ($n1/$n2);
}
// stampo il risultato
divisione(10/0);
Richiamare una funzione
Come abbiamo giร visto nei precedenti esempi per utilizzare una funzione รจ sufficiente richiamarne il nome indicando, ove necessario, i parametri richiesti in argomento. Ad esempio:
// funzione senza argomenti e con valore di ritorno
$var = nome_funzione();
// funzione con argomenti e con valore di ritorno
$var = nome_funzione($arg1,$arg2);
// funzione senza argomenti e senza valore di ritorno
nome_funzione();
// funzione con argomenti e senza valore di ritorno
nome_funzione($arg1,$arg2);
Un esempio completo: una funzione per calcolare il prezzo con IVA
Per concludere questa lezione vediamo un esempio completo di funzione PHP personalizzata. Vediamo di seguto una funzione per il calcolo del prezzo + IVA:
function prezzo_ivato($prezzo) {
$aliquota = 22;
$prezzo_ivato = ($prezzo*(100+$aliquota))/100;
return number_format($prezzo_ivato,2,',','');
}
// utilizzo la funzione
$prezzo = 70;
$prezzo_finale = prezzo_ivato($prezzo);
echo 'Il prezzo finale รจ di ' . $prezzo_finale . ' Euro';