Arrow function in PHP

Le arrow function sono state introdotte in PHP 7.4. Le arrow function sono un miglioramento nella sintassi delle funzioni anonime, in quanto permettono di essere più concisi. Inoltre a differenza delle funzioni anonime, possiamo accedere alle variabili esterne allo scopo della funzione senza l'ausilio della keyword use().
Indice
Sintassi di un arrow function
La sintassi di una arrow function è molto breve:
fn() => [valore restituito];
Esempio di arrow function
<?php
// Arrow Function
$array1 = array(6,9,11,3,4,1);
$array2 = array(20,9,3,17,6,4);
/* funzione usort() che passa in input l'$array1 e
ed una funzione anonima di confronto che prende in input
l'agomento $a e l'argomento $b, e nell'esecuzione li confronta
tramite l'operatore spaceship <=> che indica se il valore di $a
è minore (-1) uguale (0) o maggiore (1) del valore di $b.
*/
usort($array1, function ($a,$b){
return $a <=> $b;
});
/* Con la sintassi dell'arrow function possiamo riscrivere la stessa
funzione in modo più conciso. Si utilizza la keyword fn() anzichè aprire
la graffa useremo => e scriveremo direttamente il codice da eseguire
senza usare la keyword return.
*/
usort($array2, fn($a,$b) => $a <=> $b);
var_dump($array1);
var_dump($array2);
/*
Una delle differenze tra funzioni anonime e arrow function
oltre alla sintassi è l'accesso alle variabili esterne alla
funzione. Ad esempio per accedere alla variabile esterna $b
della funzione anonima sottostante, dobbiamo usare la keyword
use($b) , altrimenti ci ritroveremo "Warning: Undefined variable $b".
*/
$b = 10;
$anonima = function($a) use($b){
return $a + $b;
};
echo $anonima(2) . "\n";
/*
Con le arrow function invece possiamo accedere alla variabile
definita nello scope globale senza l'utilizzo della keyword use($b).
*/
$anonima2 = fn($a) => $a + $b;
echo $anonima2(3) . "\n";
?>