
PASAR UNA FUNCIÓN COMO PARÁMETRO DE OTRA FUNCIÓN EN PHP
Hace un tiempo expliqué en un post como funcionan las funciones anónimas en php y ahora quiero comentaros como pasar una funcion como parámetro de otra función en php y la verdad es que es bastante sencillo.
Primero voy a poner un ejemplo usando funciones anónimas:
$suma = function ($a,$b){
return $a + $b;
};
$resta = function ($a,$b){
return $a - $b;
};
function operacion($function,$a,$b){
echo $function($a,$b);
}
operacion($resta,5,3);
operacion($suma,5,3);
En este primer ejemplo se puede ver que se crean las funciones anónimas suma y resta que tienen dos parámetros. Lo que también permite php es crear una función y pasar como argumento el nombre de dicha función.
function multiplicacion($a,$b){
return $a * $b;
}
function operacion($function,$a,$b){
echo $function($a,$b);
}
operacion('multiplicacion',5,3);
En este segundo ejemplo se puede ver que se crea la función multiplicacioon y que se usa la funcion operacion como en el primer ejemplo.
Pero ¿cómo se comprueba que un literal es el nombre de una funcióm o que una variable es una función anónima? Preguntándole a php si es callable usando is_callable.
Usando los ejemplos anteriores:
var_dump(is_callable($resta)); //Devolvería true
var_dump(is_callable('multiplicacion')); //Devolvería true
var_dump(is_callable('suma')); //Devolvería false pq no existe la función suma sino la variable $suma que es una función anónima.
Para el caso de las funciones anónimas no se puede usar la comprobación function_exists que en el caso de la función multiplicacion devolvería true.
Gracias a php 7 podemos decirle, a la función operacion que el argumento $function es una función simplemente indicando que el tipo es callable
function operacion(callable $function,$a,$b){
echo $function($a,$b).'
';
}
Espero que os haya gustado este post y que lo veáis útil. Compartir en twitter