Elementos, funciones, objeto en PHP
/

La función sin nombre o anónima puede usarse como ‘callback’ en PHP

La función es un elemento dentro de la programación que permite ahorrar de escribir una y otra vez el mismo código. Para su uso escribiremos cada vez que se necesite el nombre que se asigna a la función.

Una función normal, no anónima, tiene la siguiente sintaxis: función nombre_de_la_función ($argumento) {//código de la función}

ejemplo de creación de una función en PHP 


<?php
   $cadena = 'altruistas.org';
   function convertir_a_cifrado ($argumento) {
   echo "<br>El hash sha1 de: '".$argumento."' es: <b>".sha1 ($argumento);
   }
   convertir_a_cifrado ($cadena);
?>

La función de PHP sha1 devuelve el hash sha1 de un string


Sin embargo en este artículo son las funciones sin nombre o anónimas las que interesa conocer y cuales son sus particularidades.

Ejemplo de función anónima


<?php
   $cadena= 'altruistas.org';
   $funcion_anonima = function ($argumento) { 
   echo "El hash sha1 de '".$argumento."' es: ".sha1 ($argumento);
   };
   $funcion_anonima ("cadena");
?>

Resultado: El hash sha1 de: ‘altruistas.org’ es: f7a52d818deb826833ae0ebf1c7c72d2ac9325bb


Una de las ventajas de esta tipo de función es que pueden utilizarse como funciones de devolución de llamada (callback) o como valores de variables. Para ver un ejemplo del uso de una función anónima como una función de devolución de llamada se va a describir un ejemplo con el uso de la función de PHP array_walk que, precisamente, toma como parámetros una tabla y una función callback. Esa función anónima va a ejecutarse para cada elemento de la tabla (array).

ejemplo uso de función anónima como callback


<?php 
   $datos_tabla = array ('altruistas.org', 'radio.altruistas.org', 'revista.altruistas.org');
   array_walk ($datos_tabla, function (&$item) {
       $item = sha1 ($item);
   });
   var_dump ($datos_tabla); //muestra la tabla modificada
?>

Resultado: array(3) { [0]=> string(40) «f7a52d818deb826833ae0ebf1c7c72d2ac9325bb» [1]=> string(40) «b273c26d9590d627f96ed642137287778dac63ac» [2]=> string(40) «fcdc2435e950e3cfaa19857c3af8350d77a926d6» }

Deja una respuesta