Riprendiamo non alla grande con le nostre super guide, riprendiamo alla grandissima! Partiamo da PHP essendo che ancora (e aggiungiamo purtroppo!) si vedono in giro tante lacune!

Funzioni PHP

Le funzioni in PHP vengono definite attraverso la seguente sintassi:

function nome (parametri) {

codice da eseguire;

return valore;

}

I parametri rappresentano i valori di ingresso della funzione e sono specificati tramite un elenco di variabili, separati da virgola.

Il “return valore” consente di specificare il risultato dell’esecuzione della funzione. La riga può essere omessa se la funzione non restituisce alcun valore.

Le funzioni sono di fondamentale importanza per agevolare il lavoro di programmazione: vengono catalizzate alcune porzioni di codice in modo da svolgere una singola o più attività specifiche. Supponiamo, per esempio, di aver bisogno di una funzione che calcoli il totale dei valori di un array:

function somma ($items)

{

    $totale=0;

    

    foreach ($items as $item)

    {

        $totale=$totale+$item;

    }

    

    return $totale;

}

Quindi, all’interno del mio codice, posso richiamare la funzione diverse volte con diversi array. Inoltre, le modifiche da apportare sarebbero molto localizzate e circoscritte. Infatti, la funzione può essere riscritta nel seguente modo:

function somma ($items)

{

   return array_sum($items);

}

Un aspetto delle funzioni da tenere in considerazione è la visibilità (scope) delle variabili. Le variabili create all’interno della funzione possono essere utilizzate soltanto all’interno della stessa e vengono definite variabili locali. Per esempio:

function myFunction()

{

    $a=6;

    echo $a;

}

$a=7;

myFunction();

echo $a;

Questa porzione di codice stamperà il numero 67 perché l’uguaglianza $a=7 non sovrascrive l’uguaglianza $a=6 all’interno della funzione.

Inoltre, PHP offre la possibilità di definire come opzionali alcuni parametri rendendoli opzionali e assegnandogli un valore di default. Supponiamo di riscrivere la funzione somma() definita in precedenza e di rendere opzionale il parametro passato come argomento:

function somma ($items=[])

{

   return array_sum($items);

}

In questo caso, se la funzione viene richiamata all’interno del codice senza inserire il parametro, non viene generato errore.

I parametri opzionali devono essere sempre gli ultimi nell’elenco di una funzione. Prendiamo come esempio la seguente funzione:

function saluto($prefisso=‘Ciao’,$nome)
{
    echo $prefisso $nome;
}

echo saluto(‘Luca’);

L’esecuzione di questo codice genererà il seguente errore:

Fatal error: Uncaught ArgumentCountError: Too few arguments to function saluto()

Per risolvere il problema basta invertire l’ordine dei parametri.

Oltre all’utilizzo dei parametri opzionali, PHP mette a disposizione anche l’operatore variadic, cioè la possibilità di specificare un numero indefinito di valori in ingresso tramite il prefisso punto punto punto (…). Vediamo il seguente esempio:

function myFunction(…$words)

{

    $w=[];

    foreach($words as $word)

    {

        $w[]=$word;

    }

    return $w;

}

var_dump(myFunction(‘Pippo’,‘Pluto’,‘Paperino’));

In questo esempio la funzione accetta come parametri in ingresso un elenco di stringhe che vengono memorizzate in un array. Si può notare che i parametri $words possono essere iterati come fossero un array.

Una delle più grandi novità di PHP 7 è l’introduzione della gestione dei tipi scalar in ingresso e la tipizzazione del dato in uscita per le funzioni. I dati di tipo scalar sono le stringhe, i numeri interi, in virgola mobile e i tipi booleani. In pratica, è possibile specificare la tipologia dei parametri in ingresso e in uscita delle funzioni. Prendiamo per esempio il seguente codice:

function somma(int $a,int $b)
{
return $a+$b;
}
echo somma(5,8.2);

Il risultato restituito dalla funzione sarà 13 perché di default PHP opera la conversione automatica del valore in virgola mobile 8.2 nel valore 8. Per abilitare un controllo più rigoroso dei dati in ingresso e in uscita deve essere inserita la seguente notazione:

declare(strict_types=1);

In questo caso, l’esecuzione della precedente funzione produrrà il seguente errore:

Fatal error: Uncaught TypeError: Argument 2 passed to somma() must be of the type int, float given

Oltre alla possibilità di gestire dati in ingresso, PHP 7 offre la possibilità di specificare i dati in uscita di una funzione. Per esempio, nella funzione somma() precedentemente definita è possibile specificare il tipo di dato restituito nel modo seguente:

declare(strict_types=1);

function somma(int $a,int $b) : int

{

    return $a+$b;

}

Il risultato della funzione somma() deve essere un valore di tipo integer.

Dai un’occhiata ai nostri Corsi PHP ad Oggetti e alla possibilità di fare lezioni private one to one quando e a che ora vuoi tu e con un menu del programma completamente customizzato.

Tutti i corsi e le lezioni private LaraMind sono videoregistrati!

Alessandro Gigliarano