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
- Oblidar
use
per capturar variables: Quan es treballa amb closures, és fàcil oblidar utilitzaruse
per capturar variables externes. - No passar per referència: Si necessites modificar una variable capturada, assegura't de passar-la per referència amb
&
. - 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
- Què és PHP?
- Configuració de l'Entorn de Desenvolupament
- El teu Primer Script PHP
- Sintaxi i Variables de PHP
- Tipus de Dades en PHP
Mòdul 2: Estructures de Control
Mòdul 3: Funcions
- Definició i Crida de Funcions
- Paràmetres de Funció i Valors de Retorn
- Àmbit de Variables
- Funcions Anònimes i Closures
Mòdul 4: Arrays
Mòdul 5: Treballant amb Formularis
Mòdul 6: Treballant amb Fitxers
- Lectura i Escriptura de Fitxers
- Funcions de Gestió de Fitxers
- Permisos de Fitxers
- Funcions de Directori
Mòdul 7: Programació Orientada a Objectes (OOP)
- Introducció a OOP
- Classes i Objectes
- Propietats i Mètodes
- Herència
- Interfícies i Classes Abstractes
- Traits
Mòdul 8: Treballant amb Bases de Dades
- Introducció a les Bases de Dades
- Connexió a una Base de Dades MySQL
- Realització d'Operacions CRUD
- Ús de PDO per a la Interacció amb Bases de Dades
- Seguretat en Bases de Dades
Mòdul 9: Tècniques Avançades de PHP
- Gestió d'Errors i Excepcions
- Sessions i Cookies
- Expressions Regulars
- Treballant amb JSON i XML
- PHP i Serveis Web
Mòdul 10: Frameworks PHP i Millors Pràctiques
- Introducció als Frameworks PHP
- Començant amb Laravel
- Arquitectura MVC
- Millors Pràctiques en Desenvolupament PHP
- Proves i Depuració