9 pontos por GN⁺ 2025-08-06 | Ainda não há comentários. | Compartilhar no WhatsApp
  • O PHP 8.5 passa a incluir oficialmente o operador pipe (|>), permitindo encadeamento em estilo de programação funcional
  • O operador pipe funciona como açúcar sintático (syntax sugar) ao passar o valor da esquerda como argumento da função (callable) da direita, permitindo escrever pipelines de transformação de dados complexos de forma concisa
  • Códigos que antes exigiam chamadas aninhadas ou o uso excessivo de variáveis temporárias tornam-se expressões encadeadas com melhor legibilidade, aumentando significativamente a manutenibilidade e a reutilização
  • Foi inspirado em recursos semelhantes de linguagens funcionais como F#, OCaml e Elixir, e após várias propostas e melhorias no próprio PHP, foi finalmente incluído oficialmente em 2025
  • O operador pipe também deve se conectar de perto com futuras extensões do paradigma funcional, como Partial Function Application (aplicação parcial de função) e operador de composição de funções

  • No PHP 8.5 (previsto para novembro de 2025), foi adicionado o operador pipe (|>), uma mudança pequena, mas de grande potencial, há muito solicitada pela comunidade
  • A implementação é simples, mas a funcionalidade é avaliada como algo que eleva drasticamente a expressividade do código

O que é o operador pipe do PHP 8.5?

  • O operador |> é um operador simples que passa o valor da esquerda como argumento para a função da direita
    • Simplifica a entrada de parâmetros da função, funcionando como açúcar sintático (syntax sugar)
  • Exemplo:
    $result = "Hello World" |> strlen(...);   
    // Esta linha tem o mesmo significado da abaixo   
    $result = strlen("Hello World")  
    
  • É possível encadear várias funções para escrever, linha a linha, pipelines de transformação de dados
    $result = $arr  
        |> fn($x) => array_column($x, 'tags')  
        |> fn($x) => array_merge(...$x)  
        |> array_unique(...)  
        |> array_values(...);  
    
  • No formato anterior, havia o inconveniente de precisar de chamadas altamente aninhadas ou declarar muitas variáveis temporárias
  • Esse operador foi projetado de forma semelhante ao pipe (|) do shell Unix/Linux, o que aumenta sua intuição

Contexto de introdução e histórico

  • É um conceito semelhante ao pipe de linguagens funcionais como F#, OCaml e Elixir
  • Embora o PHP também já tenha várias bibliotecas com funcionalidade parecida, houve casos de perda de desempenho e problemas de complexidade
  • Originou-se no Hack/HHVM (fork do PHP do Facebook), e no PHP várias RFCs foram rejeitadas após a primeira proposta em 2016
  • Foi finalmente aprovado como sintaxe padrão em 2025, conectado a recursos já introduzidos antes, como First Class Callables (sintaxe de chamada de função de array)

Exemplos de uso e recursos

  • Em processamento complexo de arrays, formatação de strings, processamento de fluxos de dados etc., é possível conectar funções de maneira intuitiva sem variáveis temporárias
  • Também é possível usar cadeias em contextos que aceitam apenas uma única expressão, como match(), o que maximiza o aproveitamento do código
  • À direita, além de chamadas de função, é possível usar diversos padrões, como Closure, retorno de função de alta ordem e outros

Reforço do paradigma funcional

  • O pipe pode ser combinado com qualquer função, closure ou função de alta ordem
  • Exemplo: encadeamento condicional (null-safe), Maybe Monad, processamento de stream etc., compatíveis de forma natural com vários padrões funcionais
  • Com maybe() e outras funções de alta ordem, também é possível implementar pipelines seguros para null

Direções futuras

  • A combinação com Partial Function Application (aplicação parcial de função) está prevista, permitindo combinações de função ainda mais diversas
  • Um operador de composição de funções (composition operator) também está em proposta, e isso deve permitir otimizações para combinar cadeias múltiplas, como map, de uma vez só

O operador pipe oferece uma inovação de produtividade, legibilidade e escalabilidade acima de uma simples adição sintática, e espera-se que a escrita de código no estilo de programação funcional no PHP após o 8.5 fique muito mais poderosa

Ainda não há comentários.

Ainda não há comentários.