Funzioni di callback in PHP
Callback è una funzione che viene passata come parametro a un'altra funzione.
Vediamo un esempio. Supponiamo di avere una funzione che accetta un numero come primo parametro, e un callback come secondo parametro:
<?php
function func($num, $calb)
{
}
?>
Facciamo in modo che all'interno della funzione il nostro callback venga chiamato per il numero passato:
<?php
function func($num, $calb)
{
echo $calb($num);
}
?>
Vediamo ora quali sono le opzioni per passare un callback alla nostra funzione.
Opzione 1
Il nostro callback può essere una funzione ordinaria:
<?php
function calb($num) {
return $num ** 2;
}
?>
In questo caso, come callback passeremo il nome della nostra funzione:
<?php
func(3, 'calb');
?>
All'interno della funzione func il nostro
callback verrà chiamato per nome.
Opzione 2
Il nostro callback può essere una funzione anonima, assegnata a una variabile:
<?php
$calb = function($num) {
return $num ** 2;
};
?>
In questo caso, passiamo come parametro la variabile contenente la nostra funzione:
<?php
func(3, $calb);
?>
Opzione 3
È possibile passare la funzione anonima direttamente come parametro:
<?php
func(3, function($num) {
return $num ** 2;
});
?>
Opzione 4
È possibile abbreviare il codice utilizzando una funzione freccia:
<?php
func(3, fn($num) => $num ** 2);
?>
Problemi pratici
Data una funzione che accetta come parametro un array e un callback, che verrà applicato a ogni elemento dell'array:
<?php
function func($arr, $calb)
{
$res = [];
foreach ($arr as $elem) {
$res[] = $calb($elem);
}
return $res;
}
?>
Chiama questa funzione, passando come parametro un array di numeri e un callback che eleva al quadrato il numero passato.