L'opérateur pipe de PHP 8.5 vs les Collections Laravel

PHP 8.5 a introduit l'opérateur pipe. La plupart des développeurs Laravel l'ont ignoré. Nous utilisons collect()->filter()->map() depuis des années. Cela fonctionne.

Ensuite, Spatie a publié Piper. C'est une bibliothèque qui apporte des helpers de style Laravel à l'opérateur pipe. Elle utilise des fonctions indépendantes pour les tableaux et les chaînes de caractères.

Piper est-il un remplaçant des Collections ? Non. Il sert un objectif différent.

Les avantages de Piper

• Valeurs natives. Les Collections enveloppent vos données dans un objet. Vous devez convertir les tableaux en collections et inversement. Piper fonctionne avec des tableaux et des chaînes de caractères simples. Les données entrent sous forme native et ressortent sous forme native.

• Mélange de fonctions. Une chaîne de Collections n'appelle que des méthodes de la classe Collection. Une chaîne de pipe accepte n'importe quelle fonction. Vous pouvez mélanger les helpers de Piper, les fonctions PHP natives et vos propres fonctions personnalisées dans un seul flux.

• Zéro dépendance. Piper n'a pas besoin du framework Laravel. Cela le rend parfait pour les auteurs de packages qui souhaitent un code propre sans dépendances lourdes.

Les avantages des Collections

• Richesse des fonctionnalités. Les Collections possèdent plus de 100 méthodes comme groupBy() et pluck(). Piper ne possède que les plus courantes.

• Évaluation paresseuse (Lazy evaluation). Les LazyCollections gèrent des ensembles de données massifs avec une faible consommation de mémoire. Piper crée un nouveau tableau à chaque étape. Cela peut ralentir votre application avec des données volumineuses.

• Adéquation avec l'écosystème. Eloquent retourne des Collections. Les Query builders retournent des Collections. Lutter contre le framework pour utiliser Piper crée souvent plus de travail.

• Découvrabilité. Votre IDE affiche chaque méthode lorsque vous tapez une flèche après une Collection. Avec Piper, vous devez importer manuellement chaque fonction.

Le gros bémol

Vous devez utiliser PHP 8.5. La plupart des serveurs de production utilisent encore 8.2 ou 8.4. Si vous n'êtes pas sur la version 8.5, Piper ne vous sera d'aucune utilité pour le moment.

Conseils d'adoption

Utilisez Piper si vous écrivez des packages ou du code agnostique vis-à-vis du framework. Utilisez-le lorsque vous souhaitez transformer des tableaux natifs sans la surcharge liée aux objets.

Tenez-vous-en aux Collections à l'intérieur de votre application Laravel. Elles sont intégrées, puissantes et correspondent à ce que votre équipe attend.

Piper n'est pas un remplaçant. C'est un outil pour combler les lacunes entre les projets.

Source: https://dev.to/hafiz619/php-85s-pipe-operator-vs-laravel-collections-where-piper-fits-and-where-it-doesnt-1bkl