9 puntos por GN⁺ 2025-08-06 | Aún no hay comentarios. | Compartir por WhatsApp
  • El PHP 8.5 incorpora oficialmente el operador pipe (|>), lo que permite el encadenamiento de estilo programación funcional
  • El operador pipe actúa como azúcar sintáctico (syntax sugar) al pasar el valor de la izquierda como argumento de la función (callable) de la derecha, lo que permite escribir de forma concisa canales de transformación de datos complejos
  • Un código que antes requería anidar llamadas o abusar de variables temporales ahora se convierte en una expresión encadenada de mejor legibilidad, mejorando notablemente la mantenibilidad y la reutilización
  • Se inspiró en funciones similares de lenguajes funcionales como F#, OCaml y Elixir, y tras varias propuestas y mejoras internas en PHP, finalmente se incorporó oficialmente en 2025
  • El operador pipe se conectará estrechamente con la ampliación del paradigma funcional, como la Partial Function Application (aplicación parcial de funciones) y el operador de composición de funciones

  • En PHP 8.5 (previsto para noviembre de 2025), se agregó el operador pipe (|>), un cambio pequeño pero con gran potencial solicitado durante mucho tiempo por la comunidad
  • Aunque su implementación es sencilla, se valora como una función que eleva de manera significativa la expresividad del código

¿Qué es el operador pipe de PHP 8.5?

  • El operador pipe |> es un operador simple que pasa el valor de la izquierda como argumento de la función de la derecha
    • Azúcar sintáctico (syntax sugar) que simplifica la entrada de parámetros de una función
  • Ejemplo:
    $result = "Hello World" |> strlen(...);   
    // Este código tiene el mismo significado que el siguiente  
    $result = strlen("Hello World")  
    
  • Al poder encadenar (chain) varias funciones, es posible escribir pipelines de transformación de datos línea por línea
    $result = $arr  
        |> fn($x) => array_column($x, 'tags')  
        |> fn($x) => array_merge(...$x)  
        |> array_unique(...)  
        |> array_values(...);  
    
  • En el enfoque tradicional, existía la incomodidad de tener que anidar de forma compleja o declarar muchas variables temporales
  • Este operador está diseñado de forma similar a la tubería (|) de Unix/Linux shell, por lo que su intuición de uso es alta

Antecedentes e historia

  • Es un concepto similar a la tubería de lenguajes funcionales como F#, OCaml y Elixir
  • Aunque PHP también cuenta con varias librerías que ofrecen una función similar, surgieron problemas de degradación de rendimiento y complejidad
  • Se originó en Hack/HHVM (el fork de PHP de Facebook), y en PHP el RFC fue rechazado varias veces tras la primera propuesta en 2016
  • En 2025 fue finalmente aprobado como sintaxis estándar, y se integra con características ya incorporadas antes, como First Class Callables (sintaxis de llamada de funciones de matriz)

Casos de uso y características

  • En el procesamiento complejo de arrays, manipulación de cadenas, procesamiento de flujos de datos, etc., es posible conectar funciones de manera intuitiva sin variables temporales
  • También permite usar cadenas en contextos que solo permiten una sola expresión, como match(), maximizando así el uso del código
  • A la derecha se pueden emplear no solo llamadas a funciones, sino también patrones diversos como closure (Closure), funciones de orden superior retornadas, etc.

Fortalecimiento del paradigma funcional

  • El pipe puede combinarse con cualquier función, closure u función de orden superior
  • Ejemplos: encadenamiento condicional (Null-safe), Maybe Monad, procesamiento de streams y otros patrones funcionales compatibles de forma natural
  • Con el pipe y una función de orden superior como maybe(), también es posible implementar una tubería segura para null

Rumbo futuro

  • Se espera que la combinación con Partial Function Application (aplicación parcial de funciones) permita una variedad aún mayor de composiciones de funciones
  • También se está proponiendo un operador de composición de funciones (composition operator), que permitiría optimizar la combinación de cadenas como múltiples map en una sola vez

El operador pipe ofrece una innovación de productividad, legibilidad y escalabilidad más allá de una simple adición sintáctica y se espera que la escritura de código en estilo de programación funcional sea mucho más potente a partir de PHP 8.5

Aún no hay comentarios.

Aún no hay comentarios.