Funzioni PHP: Come Comprenderle e Utilizzarle nel Codice
Le funzioni PHP rendono il codice modulare e riutilizzabile. Scopri come definirle, passare argomenti, gestire valori di ritorno e lo scope delle variabili.
Una funzione è un blocco di codice con un nome che esegue un compito specifico. Le funzioni sono uno dei mattoni fondamentali più importanti in PHP: permettono di scrivere una logica una sola volta e riutilizzarla ovunque, invece di copiare lo stesso codice in molti posti. Questa pagina spiega come definire e chiamare le funzioni, come passare argomenti (inclusi valori predefiniti, dichiarazioni di tipo, passaggio per riferimento e liste di argomenti variabili), come funzionano i valori di ritorno e le regole di scope che determinano quali variabili una funzione può vedere.
Cos'è una Funzione PHP?
Una funzione PHP è un blocco di codice riutilizzabile che viene eseguito solo quando la si chiama. Si dichiara una funzione con la parola chiave function, seguita da un nome, una coppia di parentesi che elenca i parametri (gli input che la funzione accetta) e un corpo racchiuso tra { }. Una funzione può facoltativamente restituire un valore con la parola chiave return.
La struttura generale di una funzione è la seguente:
function functionName($parameter1, $parameter2) {
// code to run when the function is called
return $result; // optional
}Alcune regole di denominazione: il nome di una funzione deve iniziare con una lettera o un underscore, può contenere lettere, numeri e underscore, ed è case-insensitive (sayHello() e SayHello() chiamano la stessa funzione). Per convenzione, la maggior parte del codice PHP moderno usa camelCase o snake_case per le funzioni definite dall'utente.
Perché Usare le Funzioni PHP?
L'uso delle funzioni offre diversi vantaggi concreti:
- Riutilizzabilità. Scrivi la logica una volta, chiamala tutte le volte che ti serve. Modificare il comportamento significa intervenire in un solo posto invece di cercare ogni copia.
- Leggibilità. Una funzione ben nominata (
calculateTax()) dice al lettore cosa succede senza obbligarlo a leggere come. - Modularità. Suddividere un compito complesso in funzioni più piccole rende ogni parte più facile da comprendere, testare e fare il debug.
- Meno bug. Meno codice duplicato significa meno posti dove lo stesso errore può nascondersi.
Come Definire e Chiamare una Funzione
Definire una funzione non fa nulla di per sé — il corpo viene eseguito solo quando la si chiama scrivendone il nome seguito dalle parentesi. L'esempio seguente definisce una funzione senza parametri e poi la chiama due volte.
<?php
function greet() {
echo "Hello from a function!\n";
}
greet(); // call it
greet(); // call it again
?>Output:
Hello from a function!
Hello from a function!Funzione Semplice che Restituisce un Valore
Una funzione che non accetta parametri e restituisce una stringa:
Output: Hello, World!
Parametri e Argomenti delle Funzioni
Un parametro è la variabile nominata nella definizione della funzione; un argomento è il valore effettivo che si passa durante la chiamata. PHP offre diversi modi per lavorare con essi.
Passaggio di Argomenti
La funzione seguente accetta due parametri e restituisce la loro somma. Passiamo 5 e 10 come argomenti.
Output: 15
Valori Predefiniti dei Parametri
Un parametro può avere un valore predefinito, usato quando il chiamante omette quell'argomento. I parametri con valori predefiniti devono venire dopo quelli obbligatori.
<?php
function greet($name, $greeting = "Hello") {
return "$greeting, $name!";
}
echo greet("Anna") . "\n"; // uses the default greeting
echo greet("Anna", "Welcome"); // overrides the default
?>Output:
Hello, Anna!
Welcome, Anna!Dichiarazioni di Tipo
È possibile dichiarare il tipo atteso di ciascun parametro e del valore di ritorno. Questo rende una funzione autodocumentante e consente a PHP di generare un errore quando riceve il tipo errato.
<?php
function multiply(int $a, int $b): int {
return $a * $b;
}
echo multiply(4, 3);
?>Output: 12
Passaggio di Argomenti per Riferimento
Per impostazione predefinita, PHP passa gli argomenti per valore — la funzione lavora su una copia e la variabile originale rimane invariata. Usa il prefisso & su un parametro per passarlo per riferimento, consentendo alla funzione di modificare direttamente la variabile del chiamante.
<?php
function addOne(&$number) {
$number++;
}
$count = 10;
addOne($count);
echo $count;
?>Output: 11
Liste di Argomenti a Lunghezza Variabile
Quando non si sa quanti argomenti verranno passati, l'operatore ... (splat) li raccoglie tutti in un array.
<?php
function sumAll(...$numbers) {
return array_sum($numbers);
}
echo sumAll(1, 2, 3, 4, 5);
?>Output: 15
Restituzione di Valori
Una funzione restituisce un valore con la parola chiave return. return interrompe anche la funzione immediatamente — qualsiasi codice successivo viene saltato. Una funzione senza return (o return; senza valore) restituisce null. Per restituire più valori contemporaneamente, si restituisce un array (oppure list() può decomprimerlo sul lato ricevente).
<?php
function minMax($a, $b) {
if ($a < $b) {
return [$a, $b]; // returns and exits here
}
return [$b, $a];
}
[$min, $max] = minMax(8, 3);
echo "Min: $min, Max: $max";
?>Output: Min: 3, Max: 8
Per un approfondimento, consulta il capitolo sull'istruzione return PHP.
Scope delle Variabili
Le variabili create dentro una funzione sono locali a quella funzione — non esistono al di fuori di essa, e la funzione non può vedere le variabili definite nello scope circostante (globale) a meno che non le si importi con la parola chiave global o le si passi come argomenti.
<?php
$message = "outside";
function showScope() {
// $message from the global scope is NOT visible here
$message = "inside";
echo $message;
}
showScope(); // prints the local value
echo "\n";
echo $message; // prints the global value, untouched
?>Output:
inside
outsideLo scope è una fonte comune di confusione per i principianti — il capitolo sullo scope delle variabili PHP spiega in dettaglio global, static e le variabili locali. Consulta anche il capitolo sulle Variabili PHP per le nozioni di base.
Errori Comuni da Evitare
- Chiamare una funzione prima che restituisca ciò che ci si aspetta — ricorda che
returnsi limita a restituire un valore; è ancora necessario usareechoo salvarlo.add(5, 10);da solo non produce nulla di visibile. - Mettere un parametro con valore predefinito prima di uno obbligatorio — PHP richiede che i valori predefiniti vengano per ultimi.
- Aspettarsi che le modifiche si propaghino all'esterno — senza
&, modificare un parametro dentro una funzione non cambia la variabile del chiamante. - Ridichiarare il nome di una funzione — non è possibile definire due funzioni con lo stesso nome; PHP genera un errore fatale.
Conclusione
Le funzioni PHP sono il fondamento del codice organizzato e riutilizzabile. Una volta che si è a proprio agio nel definire funzioni, passare argomenti (con valori predefiniti, tipi, riferimenti e variadici), restituire valori e ragionare sullo scope, è possibile scomporre qualsiasi problema complesso in parti pulite e testabili. Successivamente, esplora come lavorare con gli Array PHP e le Stringhe PHP, su cui le funzioni operano di frequente.