The Daily Commit · Edición de sección Portada PHP AI Dev EN DE FR ES

The Php Times

Noticias — Ecosistema

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.

MEDIUM · PHP, 4 de septiembre de 2026 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.

← Ecosistema — Page B1

"All the Code That's Fit to Ship" · The Daily Commit · Edición de pantalla · Información legal · Política de privacidad