Diferencia entre revisiones de «Plantilla:ManuelRomero/PHP/funcionesAnonimas»
De WikiEducator
(Página creada con «==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 im...») |
(→Funciones anónimas) |
||
Línea 1: | Línea 1: | ||
− | ==Funciones | + | ==Funciones Anónimas== |
− | + | ||
− | {{MRM_Definicion|Title= | + | {{MRM_Definicion|Title=¿Qué son?| |
− | ;Son funciones que no tienen nombre | + | ;Son funciones que no tienen nombre. |
− | ; | + | ;También se conocen como **funciones de clausura** o **funciones cierre**. En PHP, las funciones anónimas implementan la clase `Closure` ([documentación de Closure](https://www.php.net/manual/es/class.closure.php)). |
− | ; | + | ;Para crear una función anónima en PHP, se usa la siguiente estructura: |
<source lang=php> | <source lang=php> | ||
− | function (){ | + | function () { |
− | + | return "Hola desde una función anónima"; | |
− | } | + | }; |
</source> | </source> | ||
}} | }} | ||
− | |||
{{MRM_Pregunta| | {{MRM_Pregunta| | ||
− | ; | + | ;Puede parecer paradójico, pero ¿para qué sirve una función anónima y cómo podemos invocarla? |
}} | }} | ||
− | + | ||
− | ; | + | ;En PHP, existen dos formas principales de invocar una función anónima: |
− | :<span id=r>A través de | + | :<span id=r>1. A través de variables de función.</span> |
− | :<span id=r>Como argumento en | + | :<span id=r>2. Como argumento en otra función.</span> Es decir, pasamos la función anónima como parámetro a otra función. |
− | + | ||
− | * | + | ### Variables de Función |
− | + | * En PHP, podemos asignar una función anónima a una **variable** y luego invocar la función a través de esa variable. Esta técnica permite trabajar con funciones de forma similar a las variables, lo que puede ser cómodo en ciertos casos. | |
− | * | + | * Usar variables de función requiere tener presente que no podemos invocar la función antes de la asignación, ya que hasta ese punto, la función no existe en la variable. |
− | * | + | * Para asignar una función anónima a una variable, simplemente declaramos la variable y le asignamos la función. Para invocarla, solo tenemos que llamar a la variable como si fuera una función, usando paréntesis `()`. |
− | + | ||
<source lang=php> | <source lang=php> | ||
<?php | <?php | ||
$mi_funcion = function () { | $mi_funcion = function () { | ||
− | + | return "hola caracola"; | |
}; | }; | ||
− | |||
− | |||
− | |||
− | |||
+ | echo $mi_funcion(); // Imprime: hola caracola | ||
+ | ?> | ||
+ | </source> | ||
+ | |||
+ | *Si intentamos invocar la función antes de asignarla a la variable, obtendremos un error.* | ||
+ | |||
+ | <source lang=php> | ||
+ | // Error: La función no existe antes de la asignación | ||
echo $mi_funcion(); | echo $mi_funcion(); | ||
$mi_funcion = function () { | $mi_funcion = function () { | ||
− | + | return "hola caracola"; | |
}; | }; | ||
− | / | + | </source> |
− | + | ||
− | + | ||
− | + | ||
− | + | ### Comparación con Funciones Nombradas | |
− | + | En cambio, si usáramos una **función nombrada** en lugar de una función anónima, PHP podría procesarla sin importar el orden, debido a su interpretación en dos pasadas: | |
− | + | ||
− | // | + | <source lang=php> |
− | + | <?php | |
+ | echo mi_funcion(); // Esto funcionará debido a la doble pasada de PHP | ||
+ | function mi_funcion() { | ||
+ | return "hola caracola"; | ||
+ | } | ||
+ | ?> | ||
</source> | </source> | ||
+ | ### Pasar Funciones Anónimas como Parámetros en Otras Funciones | ||
+ | * Otra manera de usar funciones anónimas es pasarlas como **parámetros en otras funciones**. En PHP, hay varias funciones del sistema que aceptan una función de clausura como argumento. Al usar funciones anónimas en estos casos, podemos crear lógica personalizada que se ejecuta en el contexto de la función de nivel superior. | ||
+ | Algunos ejemplos de funciones del sistema que aceptan funciones de clausura como argumentos son: | ||
+ | - [`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) | ||
− | + | ### Uso de `call_user_func` para Invocar Funciones Anónimas | |
− | + | * Otra forma de invocar una función anónima es mediante la función **`call_user_func`**. Esta función acepta una función anónima como primer argumento y, opcionalmente, otros argumentos que serán pasados a la función anónima. | |
− | + | ||
− | + | ||
− | * | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | |||
<source lang=php> | <source lang=php> | ||
<?php | <?php | ||
− | call_user_func(function ($nombre){echo " | + | call_user_func(function ($nombre) { |
− | + | echo "Hola $nombre"; | |
− | //Este código | + | }, "Manuel"); |
+ | // Este código imprimirá: Hola Manuel | ||
?> | ?> | ||
</source> | </source> | ||
− | * | + | ### Mejorar la Legibilidad Usando Variables |
+ | *En lugar de escribir la función anónima directamente en '''call_user_func''', podemos asignarla a una variable para mejorar la legibilidad del código. | ||
<source lang=php> | <source lang=php> | ||
<?php | <?php | ||
− | $saludar = function ($nombre){ | + | $saludar = function ($nombre) { |
− | + | echo "Hola $nombre"; | |
}; | }; | ||
call_user_func($saludar, "Manuel"); | call_user_func($saludar, "Manuel"); | ||
− | + | // Este código imprimirá: Hola Manuel | |
?> | ?> | ||
</source> | </source> |
Revisión de 18:41 5 nov 2024
Funciones Anónimas
function () { return "Hola desde una función anónima"; }; |
- En PHP, existen dos formas principales de invocar una función anónima
- 1. A través de variables de función.
- 2. Como argumento en otra función. Es decir, pasamos la función anónima como parámetro a otra función.
- Variables de Función
- En PHP, podemos asignar una función anónima a una **variable** y luego invocar la función a través de esa variable. Esta técnica permite trabajar con funciones de forma similar a las variables, lo que puede ser cómodo en ciertos casos.
- Usar variables de función requiere tener presente que no podemos invocar la función antes de la asignación, ya que hasta ese punto, la función no existe en la variable.
- Para asignar una función anónima a una variable, simplemente declaramos la variable y le asignamos la función. Para invocarla, solo tenemos que llamar a la variable como si fuera una función, usando paréntesis `()`.
<?php $mi_funcion = function () { return "hola caracola"; }; echo $mi_funcion(); // Imprime: hola caracola ?>
- Si intentamos invocar la función antes de asignarla a la variable, obtendremos un error.*
// Error: La función no existe antes de la asignación echo $mi_funcion(); $mi_funcion = function () { return "hola caracola"; };
- Comparación con Funciones Nombradas
En cambio, si usáramos una **función nombrada** en lugar de una función anónima, PHP podría procesarla sin importar el orden, debido a su interpretación en dos pasadas:
<?php echo mi_funcion(); // Esto funcionará debido a la doble pasada de PHP function mi_funcion() { return "hola caracola"; } ?>
- Pasar Funciones Anónimas como Parámetros en Otras Funciones
- Otra manera de usar funciones anónimas es pasarlas como **parámetros en otras funciones**. En PHP, hay varias funciones del sistema que aceptan una función de clausura como argumento. Al usar funciones anónimas en estos casos, podemos crear lógica personalizada que se ejecuta en el contexto de la función de nivel superior.
Algunos ejemplos de funciones del sistema que aceptan funciones de clausura como argumentos son: - [`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)
- Uso de `call_user_func` para Invocar Funciones Anónimas
- Otra forma de invocar una función anónima es mediante la función **`call_user_func`**. Esta función acepta una función anónima como primer argumento y, opcionalmente, otros argumentos que serán pasados a la función anónima.
<?php call_user_func(function ($nombre) { echo "Hola $nombre"; }, "Manuel"); // Este código imprimirá: Hola Manuel ?>
- Mejorar la Legibilidad Usando Variables
- En lugar de escribir la función anónima directamente en call_user_func, podemos asignarla a una variable para mejorar la legibilidad del código.
<?php $saludar = function ($nombre) { echo "Hola $nombre"; }; call_user_func($saludar, "Manuel"); // Este código imprimirá: Hola Manuel ?>