PHP 8.5 Pipe Operatörü vs Laravel Collections

PHP 8.5 pipe operatörünü tanıttı. Çoğu Laravel geliştiricisi bunu görmezden geldi. Yıllardır collect()->filter()->map() kullanıyoruz. İş görüyor.

Sonra Spatie Piper'ı yayınladı. Pipe operatörüne Laravel tarzı yardımcılar (helpers) getiren bir kütüphanedir. Diziler ve dizeler (strings) için bağımsız fonksiyonlar kullanır.

Piper, Collections'ın bir alternatifi mi? Hayır. Farklı bir amaca hizmet ediyor.

Piper'ın kazandığı noktalar

• Yerel (native) değerler. Collections verilerinizi bir nesne (object) içine sarar. Dizileri collection'lara, sonra tekrar dizilere dönüştürmeniz gerekir. Piper ise düz diziler ve dizelerle çalışır. Veri yerel olarak girer ve yerel olarak çıkar.

• Fonksiyonları karıştırma. Bir Collection zinciri yalnızca Collection sınıfındaki metodları çağırır. Bir pipe zinciri ise herhangi bir fonksiyonu kabul eder. Piper yardımcılarını, yerel PHP fonksiyonlarını ve kendi özel fonksiyonlarınızı tek bir akışta karıştırabilirsiniz.

• Sıfır bağımlılık. Piper, Laravel framework'üne ihtiyaç duymaz. Bu da onu, ağır bağımlılıklar olmadan temiz kod isteyen paket yazarları için mükemmel kılar.

Collections'ın kazandığı noktalar

• Özellik derinliği. Collections, groupBy() ve pluck() gibi 100'den fazla metoda sahiptir. Piper ise yalnızca en yaygın olanlara sahiptir.

• Tembel değerlendirme (Lazy evaluation). LazyCollections, devasa veri kümelerini düşük bellek kullanımıyla işler. Piper ise her adımda yeni bir dizi oluşturur. Bu durum, büyük verilerle uygulamanızı yavaşlatabilir.

• Ekosistem uyumu. Eloquent, Collections döndürür. Query builder'lar Collections döndürür. Piper kullanmak için framework ile mücadele etmek genellikle daha fazla iş yükü yaratır.

• Keşfedilebilirlik. Bir Collection'dan sonra tire işareti koyduğunuzda IDE'niz tüm metodları gösterir. Piper ile her fonksiyonu manuel olarak içe aktarmanız (import) gerekir.

Asıl Sorun

PHP 8.5 kullanıyor olmalısınız. Çoğu üretim (production) sunucusu hala 8.2 veya 8.4 çalıştırıyor. Eğer 8.5 sürümünde değilseniz, Piper şu an sizin için işlevsizdir.

Kullanım İpuçları

Paket yazıyorsanız veya framework'ten bağımsız (agnostic) kod geliştiriyorsanız Piper'ı kullanın. Nesnelerin getirdiği ek yük (overhead) olmadan yerel dizileri dönüştürmek istediğinizde kullanın.

Laravel uygulamanızın içinde Collections kullanmaya devam edin. Onlar entegre, güçlüdür ve ekibinizin beklediği şeydir.

Piper bir ikame değildir. Projeler arasındaki boşlukları doldurmak için bir araçtır.

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