Introducción

En PHP, las funciones anónimas, también conocidas como funciones lambda, son funciones sin nombre que se pueden almacenar en variables y pasar como argumentos a otras funciones. Los closures son un tipo especial de funciones anónimas que pueden capturar variables del ámbito en el que fueron creadas.

Funciones Anónimas

Definición y Uso

Las funciones anónimas se definen utilizando la palabra clave function sin especificar un nombre. Aquí hay un ejemplo básico:

<?php
// Definiendo una función anónima y asignándola a una variable
$suma = function($a, $b) {
    return $a + $b;
};

// Llamando a la función anónima
echo $suma(3, 4); // Salida: 7
?>

Pasando Funciones Anónimas como Argumentos

Las funciones anónimas pueden ser pasadas como argumentos a otras funciones. Esto es útil para funciones de orden superior, como array_map y array_filter.

<?php
// Usando una función anónima con array_map
$numeros = [1, 2, 3, 4, 5];
$cuadrados = array_map(function($n) {
    return $n * $n;
}, $numeros);

print_r($cuadrados); // Salida: Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 )
?>

Closures

Definición y Uso

Un closure es una función anónima que puede capturar variables del ámbito en el que fue creada. Esto se logra utilizando la palabra clave use.

<?php
$factor = 10;
$multiplier = function($n) use ($factor) {
    return $n * $factor;
};

echo $multiplier(5); // Salida: 50
?>

Modificando Variables Capturadas

Para modificar una variable capturada dentro de un closure, se debe pasar por referencia utilizando el operador &.

<?php
$contador = 0;
$incrementar = function() use (&$contador) {
    $contador++;
};

$incrementar();
$incrementar();
echo $contador; // Salida: 2
?>

Ejercicios Prácticos

Ejercicio 1: Función Anónima Básica

Instrucciones:

  1. Define una función anónima que tome un número y devuelva su cubo.
  2. Asigna esta función a una variable.
  3. Llama a la función con el número 3 y muestra el resultado.

Solución:

<?php
$cubo = function($n) {
    return $n * $n * $n;
};

echo $cubo(3); // Salida: 27
?>

Ejercicio 2: Closure con Captura de Variables

Instrucciones:

  1. Define una variable base con el valor 5.
  2. Crea un closure que tome un número y lo multiplique por base.
  3. Llama al closure con el número 4 y muestra el resultado.

Solución:

<?php
$base = 5;
$multiplier = function($n) use ($base) {
    return $n * $base;
};

echo $multiplier(4); // Salida: 20
?>

Ejercicio 3: Modificación de Variables Capturadas

Instrucciones:

  1. Define una variable contador con el valor 0.
  2. Crea un closure que incremente contador en 1.
  3. Llama al closure tres veces y muestra el valor de contador.

Solución:

<?php
$contador = 0;
$incrementar = function() use (&$contador) {
    $contador++;
};

$incrementar();
$incrementar();
$incrementar();
echo $contador; // Salida: 3
?>

Conclusión

En esta sección, hemos aprendido sobre las funciones anónimas y los closures en PHP. Las funciones anónimas son útiles para definir funciones rápidas y reutilizables sin necesidad de nombrarlas, mientras que los closures permiten capturar y utilizar variables del ámbito en el que fueron creadas. Estos conceptos son fundamentales para escribir código más flexible y modular en PHP.

En el próximo módulo, exploraremos los arrays en PHP, incluyendo arrays indexados, asociativos y multidimensionales, así como las funciones útiles para manipular arrays.

Curso de Programación en PHP

Módulo 1: Introducción a PHP

Módulo 2: Estructuras de Control

Módulo 3: Funciones

Módulo 4: Arrays

Módulo 5: Trabajando con Formularios

Módulo 6: Trabajando con Archivos

Módulo 7: Programación Orientada a Objetos (POO)

Módulo 8: Trabajando con Bases de Datos

Módulo 9: Técnicas Avanzadas de PHP

Módulo 10: Frameworks de PHP y Mejores Prácticas

Módulo 11: Proyecto: Construyendo una Aplicación Web

© Copyright 2024. Todos los derechos reservados