## 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:

    4

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
?>`

### Changelog

Version | Beschreibung
--- | ---
7.4.0 | Pfeilfunktionen sind verfügbar.

### Anmerkungen

> Hinweis: Es ist möglich func_num_args(), func_get_arg() und func_get_args() innerhalb einer Pfeilfunktion zu verwenden.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open