Lezione 12 — Parametri e valori di ritorno in PHP: Guida Completa

Scopri come rendere le tue funzioni dinamiche e riutilizzabili utilizzando i parametri di input e i valori di ritorno in PHP.

Introduzione ai Parametri e ai Valori di Ritorno

Nelle lezioni precedenti abbiamo imparato a creare funzioni semplici per raggruppare blocchi di codice. Tuttavia, una funzione che esegue sempre la stessa operazione (ad esempio, stampando sempre lo stesso saluto) è limitata. Per rendere il codice veramente potente e flessibile, abbiamo bisogno di due concetti fondamentali: i parametri e i valori di ritorno.

Immaginate una funzione come una macchina: i parametri sono le materie prime che inserite nella macchina (input), mentre il valore di ritorno è il prodotto finito che la macchina vi restituisce (output). Senza parametri, la macchina farebbe sempre la stessa cosa. Senza un valore di ritorno, la macchina processerebbe i dati ma non vi consegnerebbe il risultato, limitandovi a "osservare" l'azione (come un echo).

In questa lezione esploreremo in profondità come definire input variabili e come recuperare i risultati delle elaborazioni per utilizzarli in altre parti del programma.

I Parametri: Rendere le Funzioni Dinamiche

I parametri sono variabili locali che vengono definite nella dichiarazione della funzione. Essi permettono di passare informazioni all'interno della funzione al momento della sua chiamata.

Perché usare i parametri?

L'obiettivo principale è il riuso del codice. Invece di scrivere dieci funzioni diverse per salutare dieci persone diverse, scriviamo una sola funzione che accetta un nome come parametro.

Esempio di funzione con parametro

Vediamo come implementare una funzione di saluto personalizzata. In questo esempio, definiamo un parametro $nome che agirà come segnaposto per qualsiasi valore passeremo alla funzione.

<?php
/**
 * Funzione per salutare un utente
 * @param string $nome Il nome della persona da salutare
 */
function salutaUtente($nome) {
    echo "Ciao $nome, benvenuto nel corso di PHP!\
";
}

// Chiamate alla funzione con argomenti diversi
salutaUtente("Marco"); // Output: Ciao Marco, benvenuto nel corso di PHP!
salutaUtente("Giulia"); // Output: Ciao Giulia, benvenuto nel corso di PHP!
?>

In questo codice, $nome è il parametro (definito nella firma della funzione), mentre "Marco" e "Giulia" sono gli argomenti (i valori reali passati durante la chiamata). È fondamentale distinguere i due termini: il parametro è la variabile astratta, l'argomento è il valore concreto.

Gestire Più Parametri

Una funzione può accettare un numero illimitato di parametri, separati da virgole. Questo è essenziale quando l'operazione da eseguire dipende da più variabili.

Esempio: Calcolo dell'area di un rettangolo

Consideriamo un caso d'uso matematico. Per calcolare l'area, abbiamo bisogno di due valori: base e altezza.

<?php
/**
 * Calcola l'area di un rettangolo e la stampa
 * @param float $base La base del rettangolo
 * @param float $altezza L'altezza del rettangolo
 */
function calcolaAreaRettangolo($base, $altezza) {
    $area = $base * $altezza;
    echo "L'area del rettangolo con base $base e altezza $altezza è: $area\
";
}

// Test con diversi valori
calcolaAreaRettangolo(10, 5); // Output: L'area è 50
calcolaAreaRettangolo(7.5, 3); // Output: L'area è 22.5
?>

In questo esempio, la funzione è flessibile: non importa quali numeri inseriamo, la logica di moltiplicazione rimane la stessa. Questo riduce drasticamente la duplicazione del codice.

Il Valore di Ritorno: L'istruzione return

Fino a questo momento, le nostre funzioni hanno usato echo per mostrare i risultati. Tuttavia, in un'applicazione reale, raramente vogliamo che una funzione stampi direttamente a video. Spesso vogliamo che la funzione calcoli un valore e lo restituisca al programma principale, affinché possa essere usato per ulteriori calcoli, salvato in un database o manipolato in un altro modo.

Qui entra in gioco l'istruzione return.

Differenza tra echo e return

  • echo invia un dato direttamente al browser/terminale. La funzione "parla" all'utente.
  • return invia un dato al punto in cui la funzione è stata chiamata. La funzione "parla" al programma.

Esempio di funzione con valore di ritorno

Trasformiamo la funzione dell'area in una funzione che restituisce il valore invece di stamparlo.

<?php
/**
 * Calcola l'area di un rettangolo e restituisce il risultato
 * @param float $base
 * @param float $altezza
 * @return float L'area calcolata
 */
function getAreaRettangolo($base, $altezza) {
    return $base * $altezza;
}

// Ora il valore restituito può essere assegnato a una variabile
$risultato1 = getAreaRettangolo(10, 5);
$risultato2 = getAreaRettangolo(7.5, 3);

// Possiamo usare i risultati per altri calcoli
$areaTotale = $risultato1 + $risultato2;

echo "La somma delle due aree è: $areaTotale"; // Output: 72.5
?>

Notate come l'uso di return renda la funzione molto più versatile. Possiamo decidere di stampare il risultato, di sommarlo a un altro valore o di ignorarlo completamente.

Parametri Opzionali e Valori di Default

Cosa succede se vogliamo che un parametro sia facoltativo? PHP permette di assegnare un valore di default a un parametro. Se l'utente non fornisce un argomento per quel parametro, PHP utilizzerà il valore predefinito.

Esempio: Saluto con titolo opzionale

<?php
/**
 * Saluta l'utente con un titolo opzionale
 * @param string $nome
 * @param string $titolo Valore di default 'Gentile'
 */
function salutaFormale($nome, $titolo = "Gentile") {
    return "$titolo $nome, benvenuto nel sistema.";
}

// Caso 1: Forniamo entrambi gli argomenti
echo salutaFormale("Mario", "Dottor"); // Output: Dottor Mario, benvenuto nel sistema.

echo "\
";

// Caso 2: Forniamo solo il nome, viene usato il default
echo salutaFormale("Luigi"); // Output: Gentile Luigi, benvenuto nel sistema.
?>

Regola importante: I parametri con valori di default devono sempre essere posizionati alla fine della lista dei parametri. Non puoi avere un parametro obbligatorio dopo uno opzionale.

Esempi Pratici e Casi d'Uso Reali

Per consolidare questi concetti, vediamo due scenari comuni nello sviluppo web.

Caso 1: Calcolo dell'IVA

In un e-commerce, avrai bisogno di calcolare l'IVA su molti prodotti diversi. Invece di scrivere la formula ovunque, crei una funzione dedicata.

function calcolaPrezzoIvato($prezzoNetto, $aliquota = 0.22) {
    return $prezzoNetto * (1 + $aliquota);
}

$prodottoA = calcolaPrezzoIvato(100); // 122 (IVA 22%)
$prodottoB = calcolaPrezzoIvato(100, 0.04); // 104 (IVA 4% per beni di prima necessità)

Caso 2: Validazione di un Input

Immaginiamo di voler controllare se una stringa è troppo corta per essere una password.

function isPasswordValida($password) {
    if (strlen($password) >= 8) {
        return true; // Valore di ritorno booleano
    } else {
        return false;
    }
}

if (isPasswordValida("12345")) {
    echo "Password accettata";
} else {
    echo "Password troppo corta!";
}

Errori Comuni e FAQ

1. Confondere l'argomento con il parametro

Ricorda: il parametro è nella definizione function miaFun($parametro), l'argomento è nella chiamata miaFun($argomento).

2. Dimenticare il return

Un errore classico per i principianti è usare echo dentro la funzione e poi provare ad assegnare il risultato a una variabile: $x = miaFunzione(); Se miaFunzione usa echo ma non ha un return, $x sarà null.

3. Ordinamento dei parametri

Se scrivi function test($a = 10, $b), PHP genererà un errore o un comportamento imprevisto. Scrivi sempre function test($b, $a = 10).

Prossimi Passi

Ora che hai padroneggiato i parametri e i valori di ritorno, hai gettato le basi per scrivere codice modulare e professionale. Per approfondire, ti suggeriamo di esplorare i seguenti argomenti:

  1. Type Hinting: Imparare a specificare il tipo di dato richiesto dai parametri (es. function somma(int $a, int $b)) per rendere il codice più robusto.
  2. Passaggio per riferimento: Scoprire come modificare una variabile esterna direttamente all'interno di una funzione usando il simbolo &.
  3. Funzioni Anonime e Arrow Functions: Esplorare le versioni moderne delle funzioni introdotte nelle versioni più recenti di PHP.

Continua a fare pratica creando piccole utility (convertitori di valuta, calcolatori di sconti, validatori di email) per rendere questi concetti naturali!