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: 

  1. 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"; 
?>
  1. 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. 
Scroll al inicio