Funzioni PHP con parametri variabili: usare <strong>variadic</strong> e l’operatore <strong>...</strong&g

by theArchitect
SHARE
Funzioni PHP con parametri variabili: usare <strong>variadic</strong> e l’operatore <strong>...</strong&g
© Guida-HTML5.it

Introduzione

Le funzioni sono uno degli strumenti più importanti in PHP per scrivere codice riutilizzabile, ordinato e facile da mantenere. Nella pratica, però, capita spesso di non sapere in anticipo quanti argomenti dovrà ricevere una funzione. Pensiamo, ad esempio, a una funzione che somma valori, registra eventi, costruisce un elenco di tag o gestisce un carrello con quantità variabili.

In questi casi PHP offre una soluzione elegante: i parametri variabili, detti anche variadic functions. Con l’operatore ... puoi raccogliere un numero arbitrario di argomenti in un array e lavorarci in modo semplice e sicuro.

Questo tutorial ti mostra come usare i parametri variabili in modo pratico, con esempi reali e consigli utili per evitare errori comuni.

Codice completo

<?php

declare(strict_types=1);

/**
 * Somma un numero variabile di valori.
 * Tutti gli argomenti passati alla funzione vengono raccolti nell´array $numeri.
 */
function somma(int ...$numeri): int
{
    $totale = 0;

    foreach ($numeri as $numero) {
        $totale += $numero;
    }

    return $totale;
}

/**
 * Unisce più stringhe con un separatore personalizzato.
 */
function unisciConSeparatore(string $separatore, string ...$parti): string
{
    return implode($separatore, $parti);
}

/**
 * Registra un evento generico con un nome e un elenco di dettagli.
 * Ogni dettaglio viene trattato come stringa.
 */
function registraEvento(string $evento, string ...$dettagli): void
{
    echo "Evento: {$evento}n";

    if (empty($dettagli)) {
        echo "Nessun dettaglio disponibile.n";
        return;
    }

    foreach ($dettagli as $indice => $dettaglio) {
        $numero = $indice + 1;
        echo "- Dettaglio {$numero}: {$dettaglio}n";
    }
}

// Esempi di utilizzo
echo "Somma 1: " . somma(2, 4, 6) . PHP_EOL;
echo "Somma 2: " . somma(10, 20, 30, 40) . PHP_EOL;

echo unisciConSeparatore(", ", "PHP", "funzioni", "variadic") . PHP_EOL;
echo unisciConSeparatore(" - ", "debug", "test", "produzione") . PHP_EOL;

registraEvento("login", "utente: mario", "ruolo: admin");
registraEvento("backup");

Spiegazione

La parte più importante di questo argomento è la sintassi:

function nomeFunzione(tipo ...$parametri)

L’operatore ... dice a PHP di raccogliere tutti gli argomenti passati nella funzione dentro un array. Questo significa che puoi passare 1, 2, 5 o 100 valori senza dover cambiare la firma della funzione.

1. Come funziona il parametro variabile

Nella funzione somma(int ...$numeri), ogni argomento passato deve essere di tipo intero. Se chiami la funzione con:

somma(2, 4, 6);

PHP crea internamente un array simile a:

[2, 4, 6]

La funzione poi scorre l’array con un ciclo foreach e calcola il totale.

2. Perché è utile nella pratica

I parametri variabili sono molto utili quando il numero di argomenti è imprevedibile. Alcuni casi reali:

  • somma di valori numerici;
  • costruzione di stringhe dinamiche;
  • registrazione di log o eventi con un numero variabile di dettagli;
  • raccolta di tag, categorie o filtri;
  • creazione di helper per formattare dati.

3. Differenza tra parametro variabile e array normale

Un errore frequente è confondere i parametri variabili con un semplice array. Con i parametri variabili puoi scrivere chiamate più naturali:

somma(1, 2, 3);

Invece di:

somma([1, 2, 3]);

Se vuoi passare un array già pronto, puoi comunque usare l’operatore di unpacking:

$valori = [1, 2, 3];
echo somma(...$valori);

Questo approccio è molto comodo quando i dati arrivano da un database, da una richiesta HTTP o da una trasformazione precedente.

4. Parametri obbligatori e variabili insieme

Puoi combinare un parametro obbligatorio con altri variabili, come nell’esempio unisciConSeparatore(string $separatore, string ...$parti). In questo caso il primo argomento serve per definire il separatore, mentre gli altri vengono raccolti in un array.

La chiamata:

unisciConSeparatore(", ", "PHP", "funzioni", "variadic");

produce una stringa unica:

PHP, funzioni, variadic

5. Gestione di input opzionali

In registraEvento() abbiamo usato un parametro variabile per accettare dettagli facoltativi. Se non vengono passati dettagli, la funzione mostra un messaggio alternativo. Questo rende il codice più robusto e facile da usare, senza dover creare molte versioni della stessa funzione.

Best practice

  • Usa la tipizzazione: specificare il tipo dei parametri variabili, ad esempio int ...$numeri o string ...$parti, aiuta a prevenire errori e rende il codice più leggibile.
  • Attiva strict types: con declare(strict_types=1); PHP applica controlli più rigorosi sui tipi, utile soprattutto in progetti moderni.
  • Non abusare della variadic: se una funzione ha un significato preciso con pochi argomenti, meglio mantenere una firma chiara invece di accettare troppi valori generici.
  • Documenta il comportamento: quando una funzione accetta un numero variabile di parametri, spiega bene nel commento cosa si aspetta e cosa restituisce.
  • Valuta l’unpacking: quando hai già un array, usa ...$array per passarlo a una funzione variadic senza riscrivere i dati.
  • Gestisci i casi vuoti: se una funzione può ricevere zero argomenti, prevedi un comportamento chiaro e sicuro.

Riepilogo

I parametri variabili in PHP sono una soluzione pratica per scrivere funzioni flessibili e riutilizzabili. Con l’operatore ... puoi raccogliere un numero arbitrario di argomenti e lavorarci come se fossero un array.

In questo tutorial hai visto come:

  • definire una funzione variadic;
  • tipizzare correttamente i parametri;
  • combinare parametri obbligatori e variabili;
  • passare array già esistenti con l’unpacking;
  • gestire casi reali come somme, concatenazioni e registrazione eventi.

Se usati bene, i parametri variabili migliorano la qualità del codice e riducono la necessità di creare molte funzioni simili tra loro.

Approfondisci con risorse ufficiali

  • PHP Manual - Variadic functions: documentazione ufficiale sulle funzioni variadiche e sull’operatore ....
  • PHP Manual - Argument unpacking: approfondimento sull’unpacking degli array nelle chiamate di funzione.
  • PHP Manual - Types: guida ufficiale alla tipizzazione dei parametri e dei valori di ritorno.
  • PHP Manual - Functions: panoramica generale sulla sintassi e sul comportamento delle funzioni in PHP.

SHARE