Diferencia entre revisiones de «Usuario:ManuelRomero/ProgramacionWeb/funciones»

De WikiEducator
Saltar a: navegación, buscar
 
(6 revisiones intermedias por el mismo usuario no mostrado)
Línea 1: Línea 1:
<div id=parrafo>
+
__NOEDITSECTION__
 
+
__NOTOC__
{{ManuelRomero/PHP/funciones}}
+
{{:Usuario:ManuelRomero/ProgramacionWeb/Funciones/nav}}
{{ManuelRomero/PHP/funcionesRecursivas}}
+
 
+
===Funciones anónimas===
+
<br />
+
{{MRM_Definicion|Title=Qué son|
+
;Son funciones que no tienen nombre
+
;Se conocen como (funciones de clousura funciones cierre), y de hecho implementa la clase (Clousura)[https://www.php.net/manual/es/class.closure.php]
+
;Crear una función anónima:
+
<source lang=php>
+
function (){
+
return "Hola desde una función anónima";
+
}
+
</source>
+
}}
+
 
+
<br />
+
{{MRM_Pregunta|
+
;Ahora viene la paradoja de para qué puede servir y cómo la puedo invocar.
+
}}
+
<br />
+
;Para invocar  a una función anónima tenemos dos formas:
+
:<span id=r>A través de las variables de  funciones</span>
+
:<span id=r>Como argumento en una función</span>, 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)
+
<source lang=php>
+
<?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,
+
?>
+
 
+
</source>
+
 
+
 
+
 
+
<source lang=php>
+
 
+
</source>
+
;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 <span id=r>call_user_func</span>, 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
+
<source lang=php>
+
<?php
+
call_user_func(function ($nombre){echo "hola $nombre";}, "Manuel");
+
 
+
//Este código nos escribirá "hola Manuel";
+
?>
+
</source>
+
*Podríamos implementar el código anterior usando variables, posiblemente se puede considerar que  mejoraríamos en legibilidad
+
<source lang=php>
+
<?php
+
$saludar = function ($nombre){
+
echo "hola $nombre";
+
};
+
 
+
call_user_func($saludar, "Manuel");
+
 
+
?>
+
</source>
+
 
+
===Funciones flecha===
+
*Las funciones flecha es una forma más corta de escribir funciones anónimas simples
+
Aparece en php en la versión 7.4
+
*Limitaciones de funciones flecha.
+
#
+
</div>
+

Última revisión de 10:30 5 dic 2025