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: 2Exercicis 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: 50Exercici 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: 15Errors Comuns i Consells
- Oblidar
useper capturar variables: Quan es treballa amb closures, és fàcil oblidar utilitzaruseper 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ó
