Plantilla:ManuelRomero/PHP/funcionesAnonimas

De WikiEducator
Revisión a fecha de 18:37 5 nov 2024; ManuelRomero (Discusión | contribuciones)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Funciones anónimas



Icon define.gif
Qué son
Son funciones que no tienen nombre
Se conocen como (funciones de clousura funciones cierre), y de hecho implementa la clase (Clousura)[1]
Crear una función anónima
function (){
 return "Hola desde una función anónima";
}





Icon qmark.gif
Pregunta
Ahora viene la paradoja de para qué puede servir y cómo la puedo invocar.



Para invocar a una función anónima tenemos dos formas
A través de las variables de funciones
Como argumento en una función, o sea que el parámetro de una función sea otra función
Variables de funciones
  • Declaro una variable y le asigno una función
  • En realidad es una forma diferente de declarar la función e invocarla, tiene la ventaja de gestionar todo como variables (posible comodidad por parte del programador)
  • Si uso esta técnica, no puedo invocar a la función antes de su declaración (ya que no existe en contenido de la variable)
  • Consiste en declarar una variable y asiganer la función
  • Posteriormente podré invocar la función a través de la variable (he de poner también paréntesis en la invocación y no olvidar el ; (punto y coma) en la asignación)
<?php
$mi_funcion = function () {
	return "hola caracola";
};
d
echo $mi_funcion();
//imprimiría "hola caracola"
//=====================================
 
echo $mi_funcion();
 
$mi_funcion = function () {
	return "hola caracola";
};
//Este código fallaría, 
//=====================================
<?php
echo mi_funcion();
 
function mi_funcion () {
	return "hola caracola";
};
 
//Este código funcionaría, php legunaje de doble pasada en su interpretación, 
?>


 
Invocación usando la función como un parámetro en otra función
  • Esto se puede conseguir ver, usando alguna función del sistema que espere recibir una función de clausura, como iremos viendo a lo largo del curso.
spl_autoload_register(https://www.php.net/manual/es/function.spl-autoload-register.php)
array_walk (https://www.php.net/manual/es/function.array-walk.php)
array_map (https://www.php.net/manual/es/function.array-map.php)
array_reduce (https://www.php.net/manual/es/function.array-reduce.php)
  • Otra forma de utilizarlo, es usando la función call_user_func, con esta función invocamos a una función anónima, necesitamos acceder a ello, y lo podemos hacer a través de un identificador, o escribiendo el código de la funćión anónima
<?php
call_user_func(function ($nombre){echo "hola $nombre";}, "Manuel");
 
//Este código nos escribirá "hola Manuel";
?>
  • Podríamos implementar el código anterior usando variables, posiblemente se puede considerar que mejoraríamos en legibilidad
<?php
$saludar = function ($nombre){
	echo "hola $nombre";
};
 
call_user_func($saludar, "Manuel");
 
?>