Fonctions de rappel en PHP
Une fonction de rappel est une fonction qui est passée en paramètre à une autre fonction.
Regardons un exemple. Supposons que nous ayons une fonction qui prend un nombre en premier paramètre, et une fonction de rappel en deuxième paramètre :
<?php
function func($num, $calb)
{
}
?>
Faisons en sorte qu'à l'intérieur de la fonction notre fonction de rappel soit appelée pour le nombre transmis :
<?php
function func($num, $calb)
{
echo $calb($num);
}
?>
Voyons maintenant quelles sont les options pour passer une fonction de rappel à notre fonction.
Option 1
Notre fonction de rappel peut être une fonction ordinaire :
<?php
function calb($num) {
return $num ** 2;
}
?>
Dans ce cas, en tant que fonction de rappel nous transmettrons le nom de notre fonction :
<?php
func(3, 'calb');
?>
À l'intérieur de la fonction func notre
fonction de rappel sera appelée par son nom.
Option 2
Notre fonction de rappel peut être une fonction anonyme, enregistrée dans une variable :
<?php
$calb = function($num) {
return $num ** 2;
};
?>
Dans ce cas, nous passons en paramètre la variable contenant notre fonction :
<?php
func(3, $calb);
?>
Option 3
On peut passer la fonction anonyme directement en paramètre :
<?php
func(3, function($num) {
return $num ** 2;
});
?>
Option 4
On peut raccourcir le code en utilisant une fonction fléchée :
<?php
func(3, fn($num) => $num ** 2);
?>
Problèmes pratiques
Une fonction est donnée, prenant en paramètre un tableau et une fonction de rappel, qui sera appliquée à chaque élément du tableau :
<?php
function func($arr, $calb)
{
$res = [];
foreach ($arr as $elem) {
$res[] = $calb($elem);
}
return $res;
}
?>
Appelez cette fonction, en passant en paramètre un tableau de nombres et une fonction de rappel élevant le nombre transmis au carré.