37-Funciones de devoluciones de llamada

Una funcion de devolucion de llamada, es una funcion que se pasa con un argumento en otra

conocidas como funciones "callback"

Cualquier función existente se puede utilizar como función de devolución de llamada.

Para utilizar una funcion como devolucion de llamada, hay que pasar un string (cadena) que contenga el nombre de la funcion como argumento de otra funcion

Ejemplo

Pasamos la funcion array_map() para calcular la longitud de un string en un array

<?php
function my_callback($item) {
  return strlen($item);
}

$strings = ["manzana", "naranja", "banana", "coco"];
$lengths = array_map("my_callback", $strings);
print_r($lengths);
?> 



...

A partir de la versión 7, PHP puede pasar funciones anónimas como funciones de devolución de llamada:

ejemplo

Vamos usar una function anonima como devolucion de llamada para la funcion array_map()

<?php
$strings = ["manzana", "naranja", "banana", "coco"];
$lengths = array_map( function($item)
{ return strlen($item); } , $strings);
print_r($lengths);
?>



Devoluciones de llamada en funciones definidas por el usuario

Las funciones y métodos definidos por el usuario también pueden tomar funciones de devolución de llamada como argumentos

Para usar funciones de devolución de llamada dentro de una función o método definido por el usuario, llamarlo agregando paréntesis a la variable y pasar argumentos como con normal funciones:

Ejemplo

Vamos a defenir una devolucion de llamada defenida por el usuario

 <?php
 function exclaim($str) {
   return $str . "! ";
 }
 
 function ask($str) {
   return $str . "? ";
 }
 
 function printFormatted($str, $format) {
   // Calling the $format callback function
   echo $format($str);
 }
 
 // Pass "exclaim" and "ask" as callback functions to printFormatted()
 printFormatted("Hola Mundo", "exclaim");
 printFormatted("Hola Mundo", "ask");
 ?> 




Publicar un comentario

0 Comentarios