Operador Pipe do PHP 8.5 vs Laravel Collections
O PHP 8.5 introduziu o operador pipe. A maioria dos desenvolvedores Laravel o ignorou. Usamos collect()->filter()->map() por anos. Funciona.
Então a Spatie lançou o Piper. É uma biblioteca que traz helpers no estilo Laravel para o operador pipe. Ele utiliza funções independentes para arrays e strings.
O Piper é um substituto para as Collections? Não. Ele serve a um propósito diferente.
Onde o Piper vence
• Valores nativos. As Collections envolvem seus dados em um objeto. Você precisa converter arrays em collections e vice-versa. O Piper trabalha com arrays e strings puros. Os dados entram de forma nativa e saem de forma nativa.
• Mistura de funções. Uma cadeia de Collection chama apenas métodos da classe Collection. Uma cadeia de pipe aceita qualquer função. Você pode misturar helpers do Piper, funções nativas do PHP e suas próprias funções customizadas em um único fluxo.
• Zero dependências. O Piper não precisa do framework Laravel. Isso o torna perfeito para autores de pacotes que desejam um código limpo sem dependências pesadas.
Onde as Collections vencem
• Profundidade de recursos. As Collections possuem mais de 100 métodos, como groupBy() e pluck(). O Piper possui apenas os mais comuns.
• Avaliação preguiçosa (Lazy evaluation). As LazyCollections lidam com conjuntos de dados massivos com baixo consumo de memória. O Piper cria um novo array em cada etapa. Isso pode deixar sua aplicação lenta com grandes volumes de dados.
• Integração com o ecossistema. O Eloquent retorna Collections. Os query builders retornam Collections. Lutar contra o framework para usar o Piper geralmente cria mais trabalho.
• Descoberta (Discoverability). Sua IDE mostra todos os métodos quando você digita um traço após uma Collection. Com o Piper, você deve importar manualmente cada função.
A Grande Pegadinha
Você precisa rodar o PHP 8.5. A maioria dos servidores de produção ainda roda o 8.2 ou 8.4. Se você não estiver no 8.5, o Piper é inútil para você no momento.
Dicas de Adoção
Use o Piper se você escreve pacotes ou código agnóstico a frameworks. Use-o quando quiser transformar arrays nativos sem o overhead de objetos.
Fique com as Collections dentro da sua aplicação Laravel. Elas são integradas, poderosas e é o que sua equipe espera.
O Piper não é um substituto. É uma ferramenta para as lacunas entre projetos.
