Operador Pipe de PHP 8.5 vs Laravel Collections
PHP 8.5 introdujo el operador pipe. La mayoría de los desarrolladores de Laravel lo ignoraron. Hemos usado collect()->filter()->map() durante años. Funciona.
Luego Spatie lanzó Piper. Es una librería que lleva los helpers al estilo Laravel al operador pipe. Utiliza funciones independientes para arrays y strings.
¿Es Piper un reemplazo para las Collections? No. Cumple un propósito diferente.
Dónde gana Piper
• Valores nativos. Las Collections envuelven tus datos en un objeto. Debes convertir los arrays en collections y viceversa. Piper trabaja con arrays y strings puros. Los datos entran de forma nativa y salen de forma nativa.
• Mezcla de funciones. Una cadena de Collection solo llama a métodos de la clase Collection. Una cadena de pipe acepta cualquier función. Puedes mezclar helpers de Piper, funciones nativas de PHP y tus propias funciones personalizadas en un solo flujo.
• Cero dependencias. Piper no necesita el framework Laravel. Esto lo hace perfecto para autores de paquetes que buscan código limpio sin dependencias pesadas.
Dónde ganan las Collections
• Profundidad de funciones. Las Collections tienen más de 100 métodos como groupBy() y pluck(). Piper solo tiene los más comunes.
• Evaluación perezosa (Lazy evaluation). Las LazyCollections manejan conjuntos de datos masivos con poca memoria. Piper crea un nuevo array en cada paso. Esto puede ralentizar tu aplicación con datos grandes.
• Integración con el ecosistema. Eloquent devuelve Collections. Los query builders devuelven Collections. Luchar contra el framework para usar Piper a menudo genera más trabajo.
• Descubribilidad. Tu IDE muestra cada método cuando escribes un guion después de una Collection. Con Piper, debes importar manualmente cada función.
El gran inconveniente
Debes ejecutar PHP 8.5. La mayoría de los servidores de producción todavía ejecutan 8.2 o 8.4. Si no estás en la versión 8.5, Piper no te sirve de nada en este momento.
Consejos de adopción
Usa Piper si escribes paquetes o código agnóstico al framework. Úsalo cuando quieras transformar arrays nativos sin la sobrecarga de los objetos.
Mantente con las Collections dentro de tu aplicación Laravel. Están integradas, son potentes y es lo que tu equipo espera.
Piper no es un reemplazo. Es una herramienta para cubrir los huecos entre proyectos.
