Arrow function in PHP

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().

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";
?>

Scritto da Donato Pirolo

Ciao, sono Donato, frontend developer con una smisurata passione per la SEO. Creo strumenti ad hoc per aiutare aziende e professionisti ad essere cercati sul web e trovare clienti.

Potrebbero interessarti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Copyright © 2023
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram