€0.00 — free as in speechtonight's forecast: clear skies over production Cache: warm · Deploys: fair, 0% rollbacks expectedset by moonlight, shipped before dawn · deploy freely Page A2

The Daily Commit The Nightly Build

Dev news, typeset daily — PHP · AI · The Wider Stack

The developer's evening paper — PHP · AI · The Wider Stack

miércoles, 9 de septiembre de 2026 Vol. I — No. 511 · Edición matinalEdición vespertina EN DE FR ES

PHP · Noticias

PHP 8.5: el operador pipe acaba con el anidamiento invertido

El nuevo operador pipe de PHP 8.5 permite escribir llamadas de funciones encadenadas en orden de ejecución en lugar de anidarlas de dentro hacia fuera.

seleccionado por Georg

La sintaxis compila a los mismos opcodes que las llamadas clásicas, sin coste en tiempo de ejecución. Las funciones con varios argumentos aún necesitan funciones flecha.

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.

Leer la fuente original (en inglés) ↗

Valora este artículo: 0

Tribuna de lectores

Aún no hay aportaciones — abre el debate.

The Daily CommitThe Nightly Build — Page A1