Der Pipe-Operator gibt einen Wert oder den Rückgabewert einer Funktion an die nächste Funktion weiter. Voraussetzung ist, dass die Funktionen in der Kette mindestens einen Parameter akzeptieren. Der Wert bzw. der Rückgabewert einer vorherigen Funktion wird immer als erster Parameter an die nächste Funktion weitergegeben. Funktionen dürfen keine Referenzparameter oder weitere Pflichtparameter haben. Der Spread Operator (...) bedeutet, dass der Wert, der sich aus der linken Seite ergibt als Parameter für die Funktion der rechten Seite verwendet wird.
Beispiel für eine Funktionen-Verkettung$new = htmlspecialchars(mb_strtoupper(trim($old)));
Dasselbe übersichtlicher$new = trim($old);
$new = mb_strtoupper($new);
$new = htmlspecialchars($new);
Dasselbe mit Pipe Operator$new = $old |> trim(...) |> mb_strtoupper(...) |> htmlspecialchars(...);
Ergebnis in allen 3 Fällen
$old = ' "<text>" '
$new = '"&
lt;TEXT>"'
Wenn bei einer der verketteten Funktionen zusätzliche Parameter verwendet werden sollen, dann können Pfeilfunktionen verwendet werden.
Dasselbe mit Pipe Operator und Pfeilfunktionen
$new = $old
|> trim(...)
|> (fn($s) => mb_strtoupper($s, 'UTF-8'))
|> (fn($s) => htmlspecialchars($s, ENT_QUOTES, 'UTF-8'));
Die Pfeilfunktion fn() nimmt den Wert aus der vorherigen Pipe-Stufe als $s entgegen und reicht ihn an die Zielfunktion mit allen gewünschten Zusatzparametern weiter. Der Parameter $s muss in der Zielfunktion nicht zwingend der erste Parameter sein. Die Pfeilfunktionen müssen bei der Verwendung mit Pipe Operator zwingend in runde Klammern eingeschlossen werden.
Mit oder ohne Pipe Operator, am Ende muss der Code lesbar bleiben.