Een anonieme functie in PHP, ook wel een “closure” genoemd, is een functie die geen naam heeft en vaak binnen de context van een andere functie of variabele wordt gedefinieerd. Anonieme functies zijn bijzonder handig voor situaties waar een eenmalige of korte functie vereist is, zoals callback-functies, array manipulaties, en andere scenario’s waar een volledige functiedefinitie overbodig zou zijn.
Een anonieme functie kan als volgt worden gedefinieerd:
```
$greet = function($name) {
return “Hello, $name”;
};
echo $greet(“World”);
```
Hier definiëren we een variabele `$greet`, die een anonieme functie toewijst die één argument, `$name`, accepteert en een begroetingsbericht retourneert. Wanneer we `$greet(“World”)` aanroepen, zal het “Hello, World” teruggeven.
Anonieme functies worden vaak gebruikt als callbacks. Een veelvoorkomend voorbeeld is het gebruik binnen array-functies zoals `array_map` en `array_filter`:
```
$numbers = [1, 2, 3, 4, 5];
$squaredNumbers = array_map(function($number) {
return $number * $number;
}, $numbers);
print_r($squaredNumbers);
```
Hier gebruiken we `array_map` om elke waarde in de `$numbers` array te vermenigvuldigen met zichzelf. De anonieme functie zorgt voor de logica binnen `array_map`.
Een andere kracht van anonieme functies in PHP is het gebruik van variabelen uit de buitenliggende scope, mogelijk gemaakt door het `use` keyword. Dit wordt vaak gebruikt in closures om toegang te krijgen tot externe variabelen:
```
$message = “Hello”;
$example = function($name) use ($message) {
return “$message, $name”;
};
echo $example(“World”);
```
In dit voorbeeld gebruiken we het `use` keyword om de variabele `$message` binnen de anonieme functie te gebruiken.
De introductie van pijlfuncties (of arrow functions) in PHP 7.4 vereenvoudigt nog verder het gebruik van anonieme functies door de syntax te verkorten en automatisch variabelen te binden uit de buitenliggende scope:
```
$numbers = [1, 2, 3, 4, 5];
$squaredNumbers = array_map(fn($number) => $number * $number, $numbers);
print_r($squaredNumbers);
```
Met pijlfuncties (fn) behalen we hetzelfde resultaat, maar met aanzienlijk minder code.
Voor deze uitleg hebben we gebruik gemaakt van de officiële PHP documentatie en enkele toevoegingen uit externe bronnen om de voorbeelden te illustreren:
1. [PHP Manual on Anonymous Functions](https://www.php.net/manual/en/functions.anonymous.php)
2. [PHP Manual on Arrow Functions](https://www.php.net/manual/en/functions.arrow.php)
3. [W3Schools PHP Anonymous Functions](https://www.w3schools.com/php/php_ref_anonymous.asp)
4. [MDN Web Docs on Closures](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures) (Hoewel dit over JavaScript gaat, biedt het een goede conceptualisering van closures, wat ook relevant is voor PHP)
Dus, anonieme functies zijn een krachtige functie in PHP die flexibiliteit en beknoptheid toevoegt aan je code, vooral wanneer je functies slechts eenmalig of als callbacks nodig hebt. De toevoeging van pijlfuncties in PHP 7.4 maakt het gebruik ervan nog intuïtiever en gemakkelijker.