Introducció

Les funcions anònimes, també conegudes com a funcions lambda, són funcions sense nom que es poden assignar a una variable o passar com a arguments a altres funcions. Les closures són funcions anònimes que poden accedir a variables del seu entorn de creació, fins i tot després que aquest hagi finalitzat.

Funcions Anònimes

Definició i Ús

Una funció anònima es defineix sense nom i es pot assignar a una variable. Aquí teniu un exemple bàsic:

$salutacio = function($nom) {
    return "Hola, $nom!";
};

echo $salutacio("Joan"); // Sortida: Hola, Joan!

Passar Funcions Anònimes com a Arguments

Les funcions anònimes es poden passar com a arguments a altres funcions. Això és útil per a funcions de callback.

function processar($callback) {
    echo $callback("Marta");
}

processar(function($nom) {
    return "Adéu, $nom!";
}); // Sortida: Adéu, Marta!

Closures

Definició i Ús

Les closures són funcions anònimes que poden capturar variables del seu entorn. Això significa que poden accedir a variables que estaven disponibles quan es van crear.

$nom = "Pere";
$salutacio = function() use ($nom) {
    return "Hola, $nom!";
};

echo $salutacio(); // Sortida: Hola, Pere!

Modificar Variables Capturades

Per modificar una variable capturada dins d'una closure, cal passar-la per referència.

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

$incrementar();
$incrementar();
echo $contador; // Sortida: 2

Exercicis Pràctics

Exercici 1: Funció Anònima Bàsica

Crea una funció anònima que multipliqui dos nombres i assigna-la a una variable. Després, crida la funció amb els valors 5 i 10.

// Solució
$multiplicar = function($a, $b) {
    return $a * $b;
};

echo $multiplicar(5, 10); // Sortida: 50

Exercici 2: Funció Anònima com a Callback

Crea una funció processar que accepti un array i una funció de callback. La funció ha d'aplicar la funció de callback a cada element de l'array i retornar un nou array amb els resultats.

// Solució
function processar($array, $callback) {
    $resultat = [];
    foreach ($array as $element) {
        $resultat[] = $callback($element);
    }
    return $resultat;
}

$numeros = [1, 2, 3, 4, 5];
$doblar = function($n) {
    return $n * 2;
};

$resultat = processar($numeros, $doblar);
print_r($resultat); // Sortida: [2, 4, 6, 8, 10]

Exercici 3: Closure amb Variables Capturades

Crea una closure que capturi una variable externa i la modifiqui. La closure ha de sumar un valor a la variable capturada cada vegada que es crida.

// Solució
$sumador = 0;
$afegir = function($valor) use (&$sumador) {
    $sumador += $valor;
};

$afegir(5);
$afegir(10);
echo $sumador; // Sortida: 15

Errors Comuns i Consells

  1. Oblidar use per capturar variables: Quan es treballa amb closures, és fàcil oblidar utilitzar use per capturar variables externes.
  2. No passar per referència: Si necessites modificar una variable capturada, assegura't de passar-la per referència amb &.
  3. Confusió amb l'àmbit de variables: Recorda que les closures poden accedir a variables del seu entorn de creació, però no poden modificar-les a menys que es passin per referència.

Conclusió

Les funcions anònimes i les closures són eines poderoses en PHP que permeten escriure codi més flexible i modular. Les funcions anònimes són útils per a callbacks i funcions de pas únic, mentre que les closures permeten capturar i manipular variables del seu entorn. Amb la pràctica, aquestes tècniques es convertiran en una part essencial del teu arsenal de programació en PHP.

Curs de Programació PHP

Mòdul 1: Introducció a PHP

Mòdul 2: Estructures de Control

Mòdul 3: Funcions

Mòdul 4: Arrays

Mòdul 5: Treballant amb Formularis

Mòdul 6: Treballant amb Fitxers

Mòdul 7: Programació Orientada a Objectes (OOP)

Mòdul 8: Treballant amb Bases de Dades

Mòdul 9: Tècniques Avançades de PHP

Mòdul 10: Frameworks PHP i Millors Pràctiques

Mòdul 11: Projecte: Construint una Aplicació Web

© Copyright 2024. Tots els drets reservats