Funciones anónimas en PHP
Bienvenido a una nueva lección de nuestro curso básico de PHP 8. Hoy vamos a meternos con las funciones anónimas, una herramienta poderosa que te da flexibilidad y estilo. Si ya dominas las funciones normales, esto es como subir de nivel con un truco especial. Todo va a ser claro, práctico y con ejemplos que te van a flipar. ¡Empecemos!
¿Qué son las funciones anónimas en PHP?
Las funciones anónimas, también conocidas como closures o lambdas, son funciones que defines sin darles un nombre fijo. Son como pequeños ayudantes que creas al vuelo para tareas rápidas o específicas, como trabajar con arreglos o pasarlas a otras funciones. Piensa en ellas como una navaja suiza: compactas, útiles y listas para usar donde las necesites.
La receta básica es esta:
$miFuncion = function ($parametros) { // Código que hace algo return $resultado; // Opcional };
- No tienen nombre propio, pero las guardas en una variable (como $miFuncion).
- Se invocan con esa variable: $miFuncion($datos).
Probando funciones anónimas en acción
¡Manos a la obra! Crea un archivo funciones_anonimas.php en curso_php8 (dentro de C:\xampp\htdocs) y prueba estos ejemplos:
Ejemplo 1: Sumar dos números
<?php $sumar = function ($num1, $num2) { return $num1 + $num2; }; $resultado = $sumar(5, 3); echo "La suma de 5 + 3 es: $resultado<br>"; ?>
Abre http://localhost/curso_php8/funciones_anonimas.php. Verás:
La suma de 5 + 3 es: 8
¿Qué pasó?
- Guardamos la función anónima en $sumar.
- La llamamos con $sumar(5, 3) y devolvió el resultado.
Ejemplo 2: Raíz cuadrada
<?php $raizCuadrada = function ($numero) { $raiz = sqrt($numero); echo "La raíz cuadrada de $numero es: $raiz<br>"; }; $raizCuadrada(9); $raizCuadrada(16); ?>
Resultado:
La raíz cuadrada de 9 es: 3
La raíz cuadrada de 16 es: 4
¿Cómo funciona?
- $raizCuadrada guarda la función anónima.
- La invocamos directamente y muestra el resultado con echo.
Ejemplo 3: Tipo de cambio
<?php $tipoDeCambio = function ($monto, $moneda) { $resultado = 0; switch ($moneda) { case "Bolivianos BOB": $resultado = $monto * 0.14; break; case "Peso mexicano MXN": $resultado = $monto * 0.048; break; case "Sol peruano PEN": $resultado = $monto * 0.25; break; default: $resultado = 0; // Si no hay caso, devolvemos 0 break; } return $resultado; }; $total = $tipoDeCambio(100, "Bolivianos BOB"); echo "100 Bolivianos son: $total USD<br>"; $total = $tipoDeCambio(100, "Peso mexicano MXN"); echo "100 Pesos MXN son: $total USD"; ?>
Resultado:
100 Bolivianos son: 14 USD
100 Pesos MXN son: 4.8 USD
¿Qué pasó?
- Usamos un switch dentro de la función anónima para convertir monedas.
- return nos dio el valor para usarlo fuera.
Ejemplos prácticos
Ejemplo 1: Filtrar un arreglo
<?php $numeros = [1, 2, 3, 4, 5, 6]; $filtrarPares = function ($num) { return $num % 2 == 0; }; $pares = array_filter($numeros, $filtrarPares); echo "Números pares: " . implode(", ", $pares) . "<br>"; ?>
Resultado:
Números pares: 2, 4, 6
¿Cómo funciona?
- Usamos la función anónima con array_filter para sacar solo los pares.
Ejemplo 2: Saludar al vuelo
<?php $saludar = function ($nombre) { echo "¡Hola, $nombre! Bienvenido al club PHP.<br>"; }; $saludar("Ana"); $saludar("Pedro"); ?>
Resultado:
¡Hola, Ana! Bienvenido al club PHP.
¡Hola, Pedro! Bienvenido al club PHP.
Ejercicios para practicar
¡Tu turno! Ve a curso_php8 y prueba estos retos:
- Factorial con anónima
Crea factorial_anonimo.php:
<?php $factorial = function ($numero) { $resultado = 1; for ($i = 1; $i <= $numero; $i++) { $resultado *= $i; } return $resultado; }; $num = 5; $fact = $factorial($num); echo "El factorial de $num es: $fact"; ?>
- Velocidad de un proyectil
Crea velocidad_anonima.php:
<?php $calcularVelocidad = function ($distancia, $tiempo) { return $distancia / $tiempo; }; $dist = 100; // metros $tiem = 2; // segundos $vel = $calcularVelocidad($dist, $tiem); echo "Velocidad: $vel metros/segundo"; ?>
Ejecuta en localhost/curso_php8/ y juega con los valores.
Consejos para no enredarte
- Punto y coma: Siempre termina la función anónima con ; después de la llave (ejemplo: };).
- Contexto: Son geniales para tareas rápidas o para pasarlas a funciones como array_filter.
use para variables externas: Si necesitas usar algo de afuera, añade use ($variable):$factor = 2;
$multiplicar = function ($num) use ($factor) {
return $num * $factor;
};
¡A por más poder!
¡Gran trabajo, máquina! Ahora las funciones anónimas son tu arma secreta para código flexible y elegante. En la próxima lección, arrancamos con programación orientada a objetos para estructurar todo como pro. Si algo no te queda claro, déjame un comentario.
Lo que aprendiste hoy:
- Qué son: Funciones sin nombre que defines al vuelo y guardas en variables.
- Cómo se usan: Con function ($params) {} y las llamas como $miFuncion().
- Ejemplos vivos: Sumaste, sacaste raíces y convertiste monedas sin nombrar nada.
- Practicaste: Hiciste factoriales y velocidades como crack anónimo.
- Tip del pro: Úsalas para tareas rápidas y combínalas con funciones como array_filter.