Pfeilfunktionen
   
    Pfeilfunktionen wurden in PHP 7.4 als prägnantere Syntax für
    anonyme Funktionen eingeführt.
   
   
    Sowohl anonyme Funktionen als auch Pfeilfunktionen sind unter Verwendung der
    Closure-Klasse
    implementiert.
   
   
    Pfeilfunktionen haben die grundsätzliche Form
    fn (argument_list) => expr.
   
   
    Pfeilfunktionen unterstützen dieselbe Funktionalität wie
    anonyme Funktionen,
    außer, dass die Verwendung von Variablen des Eltern-Gültigkeitsbereichs
    immer automatisch erfolgt.
   
   
    Wenn eine Variable, die im Ausdruck verwendet wird, im
    Eltern-Gültigkeitsbereich definiert ist, wird sie implizit per Wertübergabe
    gebunden. Im folgenden Beispiel verhalten sich die Funktionen
    $fn1 und $fn2 auf die gleiche Weise.
   
   
    
     Beispiel #1 Pfeilfunktionen binden Variablen automatisch per Wertübergabe
     
<?php
$y = 1;
$fn1 = fn($x) => $x + $y;
// gleichwertig zur Verwendung von $y per Wertübergabe:
$fn2 = function ($x) use ($y) {
    return $x + $y;
};
var_export($fn1(3));
?>
      
     Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
 
   
   
    Dies funktioniert auch, wenn Pfeilfunktionen verschachtelt werden:
   
   
    
     Beispiel #2 Pfeilfunktionen binden Variablen automatisch per Wertübergabe, selbst wenn sie verschachtelt sind
     
<?php
$z = 1;
$fn = fn($x) => fn($y) => $x * $y + $z;
// gibt 51 aus
var_export($fn(5)(10));
?>
      
     
   
   
    Ähnlich wie bei anonymen Funktion erlaubt die Pfeilfunktionssyntax
    beliebige Funktionssignaturen, einschließlich Parameter- und
    Rückgabetypen, Defaultwerte, variadische Parameter sowie Referenzübergabe
    und -rückgabe. Alle folgenden sind gültige Beispiele von Pfeilfunktionen:
   
   
    
     Beispiel #3 Beispiele von Pfeilfunktionen
     
<?php
fn(array $x) => $x;
static fn($x): int => $x;
fn($x = 42) => $x;
fn(&$x) => $x;
fn&($x) => $x;
fn($x, ...$rest) => $rest;
?>
      
     
   
   
    Pfeilfunktionen verwenden die Wertübergabe-Bindung. Dies entspricht in
    etwa der Verwendung von use($x) für jede Variable
    $x, die in der Pfeilfunktion verwendet wird.
    Wertübergabe-Bindung bedeutet, dass es nicht möglich ist, Werte aus dem
    äußeren Geltungsbereich zu ändern.
    Anonyme Funktionen können statt
    dessen für Referenzübergabe-Bindungen verwendet werden.
   
   
    
     Beispiel #4 Werte aus dem äußeren Geltungsbereich können nicht durch Pfeilfunktionen geändert werden
     
<?php
$x = 1;
$fn = fn() => $x++; // hat keine Wirkung
$fn();
var_export($x);  // gibt 1 aus
?>