PHP 8.5 führt den Pipe-Operator `|>` ein, der das Ergebnis des linken Ausdrucks als erstes Argument an das Callable rechts weitergibt. Das klassische Beispiel ist die Eingabebereinigung: Statt `strtolower(str_replace(..., trim($input)))` zu verschachteln, was in umgekehrter Ausführungsreihenfolge gelesen wird, schreibt man die Kette jetzt von links nach rechts.

slug.php
<?php
function makeSlug(string $input): string
{
    return $input
        |> trim(...)
        |> (fn($s) => str_replace(' ', '-', $s))
        |> strtolower(...)
        |> (fn($s) => preg_replace('/[^a-z0-9-]+/', '', $s));
}

Der Operator verlangt rechts ein Callable, keinen sofortigen Funktionsaufruf. Für Funktionen mit einem Argument nutzt man die First-Class-Callable-Syntax aus PHP 8.1: `trim(...)` erzeugt eine Closure, während `trim()` sofort ausführen und scheitern würde. Die kompilierten Opcodes entsprechen denen verschachtelter Aufrufe, es entsteht kein Laufzeit-Overhead.

Funktionen mit mehreren Argumenten müssen in Arrow-Functions verpackt werden, die zwingend Klammern brauchen, um Parse-Fehler zu vermeiden. Der Autor nennt diese Ausführlichkeit die häufigste Beschwerde; PHP 8.6 soll Partial Function Application bringen, um das zu lösen.

Instanzmethoden lassen sich nicht direkt pipen und brauchen Arrow-Function-Wrapper, statische Methoden funktionieren mit First-Class-Callable-Syntax. Void-Funktionen wie `var_dump` brechen die Kette, indem sie null an den nächsten Schritt weitergeben. Die Syntax ist nicht abwärtskompatibel zu PHP 8.4 oder älter. PhpStorm und VS Code mit Intelephense unterstützen sie bereits.