PHP 8.5 introduce el operador pipe `|>`, que pasa el resultado de la expresión izquierda como primer argumento al callable de la derecha. El ejemplo clásico es la sanitización de entradas: en lugar de anidar `strtolower(str_replace(..., trim($input)))`, que se lee en orden inverso a la ejecución, ahora se escribe la cadena de izquierda a derecha.

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));
}

El operador requiere un callable a la derecha, no una llamada de función inmediata. Para funciones de un argumento se usa la sintaxis de callable de primera clase de PHP 8.1: `trim(...)` crea una closure, mientras que `trim()` se ejecutaría inmediatamente y fallaría. Los opcodes compilados coinciden con los de las llamadas anidadas, no hay sobrecoste en tiempo de ejecución.

Las funciones con varios argumentos deben envolverse en funciones flecha, que requieren obligatoriamente paréntesis para evitar errores de sintaxis. El autor señala que esta verbosidad es la queja más común; PHP 8.6 debería traer aplicación parcial de funciones para resolverlo.

Los métodos de instancia no se pueden pipar directamente y necesitan funciones flecha, mientras que los métodos estáticos funcionan con la sintaxis de callable de primera clase. Las funciones void como `var_dump` rompen la cadena al pasar null al siguiente paso. La sintaxis no es retrocompatible con PHP 8.4 o anterior. PhpStorm y VS Code con Intelephense ya la soportan.