Funciones flecha o arrow functions
Hace unos días escribí un artículo sobre las funciones anónimas, pues bien, ahora hablaremos sobre las funciones flecha (arrow functions en inglés), que sí, no son otra cosa que funciones anónimas, pero con una sintaxis más corta.
Personalmente, desconocía que existía otra forma de llamarlas o crearlas. Por eso me veo en la necesidad de escribir un post al respecto.
Como acabo de decir, las funciones flecha (arrow functions) en PHP es una característica introducida en la versión 7.4 de PHP, que permite definir funciones anónimas de una manera concisa, rápida y legible.
Su sintaxis es:
fn(argumentos) => expresión;
Argumentos: son los parámetros que la función toma
Expresión: es el valor que la función devuelve.
Por ejemplo:
$suma = fn($x, $y) => $x + $y; echo $suma(2, 8); // Salida: 10
Como vemos, la sintaxis es mucho más corta y fácil de leer. Otra característica importante es que no es necesario usar la palabra clave “use” para capturar las variables del contexto en el que se define la función. En una función anónima tradicional, si queríamos capturar una variable “exterior” era necesario usar use. Aquí no hace falta.
Un ejemplo super tonto:
$numero = 8; $sumar = fn ($x) => $x + $numero; echo $sumar(2); // Salida: 10
Otro ejemplo, pero más completo 😛
$numeros = [1, 2, 3, 4]; $dobles = array_map(fn ($x) => $x * 2, $numeros); print_r($dobles); // Salida: [2, 4, 6, 8]
Lo que hace es simple, array_map aplica la función flecha a cada elemento del array $numeros.
Como vemos las características son:
- Sintaxis más corta y legible.
- No es necesario usar use para capturar variables externas.
Recuerda que son útiles cuando quieres definir funciones pequeñas. Sin embargo, si quieres definir funciones más complejas con más lógica o más funcionalidad, lo recomendable es usar las funciones tradicionales de toda la vida.
Sobre el autor
Este artículo está publicado bajo una licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional . Puedes compartirlo y adaptarlo, incluso con fines comerciales, siempre que cites al autor y mantengas esta misma licencia.