Funciones callback en PHP
Una función callback es una función que se pasa como parámetro a otra función.
Veamos un ejemplo. Supongamos que tenemos una función que acepta un número como primer parámetro, y un callback como segundo parámetro:
<?php
function func($num, $calb)
{
}
?>
Hagamos que dentro de la función nuestro callback se ejecute para el número pasado:
<?php
function func($num, $calb)
{
echo $calb($num);
}
?>
Ahora veamos qué opciones existen para pasar un callback a nuestra función.
Opción 1
Nuestro callback puede ser una función ordinaria:
<?php
function calb($num) {
return $num ** 2;
}
?>
En este caso, como callback pasaremos el nombre de nuestra función:
<?php
func(3, 'calb');
?>
Dentro de la función func nuestro
callback se llamará por su nombre.
Opción 2
Nuestro callback puede ser una función anónima, almacenada en una variable:
<?php
$calb = function($num) {
return $num ** 2;
};
?>
En este caso, pasamos como parámetro la variable con nuestra función:
<?php
func(3, $calb);
?>
Opción 3
Se puede pasar la función anónima directamente como parámetro:
<?php
func(3, function($num) {
return $num ** 2;
});
?>
Opción 4
Se puede acortar el código usando una función flecha:
<?php
func(3, fn($num) => $num ** 2);
?>
Problemas prácticos
Se da una función que acepta como parámetro un array y un callback, que se aplicará a cada elemento del array:
<?php
function func($arr, $calb)
{
$res = [];
foreach ($arr as $elem) {
$res[] = $calb($elem);
}
return $res;
}
?>
Ejecuta esta función, pasando como parámetro un array con números y un callback que eleve al cuadrado el número pasado.