Mahmut Bayrı

Laravel: Koleksiyonlar (Collections)

Giriş

Illuminate\Support\Collection sınıfı diziler çalışırken oldukça kullanışlıdır. Aşağıdaki koda bir göz atın. Diziden yeni bir koleksiyon oluşturmak için collect yardımcısını kullanıp, her element için strtoupper fonksiyonunu çalıştıracak ve boş elementleri kaldıracağız.

Gördüğünüz gibi Collection sınıfı, metdolarını arka arkaya çalıştırmanızı sağlar. Genelde her Collection metodu tümüyle yeni bir Collection örneği döner.

Koleksiyonları Oluşturma

Yukarıda belirttildiği gibi collect yardımcısı verilen dizi için yeni bir Illuminate\Support\Collection örneği döner. Koleksiyon oluşturulması basitçe şöyledir:

Varsayılan olarak, Eloquent modellerinin koleksiyonları her zaman Collection örneğidir.

Kullanılabilir Metodlar

Bu dökümanın devamında Collection sınıfındaki her bir metodu açıklayacağız. Temel diziyi akıcı bir şekilde manipüle etmek için tüm metodlar arka aryaya kullanılabilir. Dahası, hemen hemen bütün metodlar yeni bir Collection örneği dönerler. Bu orjinal koleksiyonun orjinal kopyasını saklamanızı sağlar.

Kullanım örneği görmeniz için bu tablodaki herhangi bir metodu seçebilirsiniz.

Metod Listesi

all()

all metodu tüm diziyi döner.

chunk()

chunk metodu koleksiyonu çoklu parçalara böler.

Bu metod özellikle Bootstrap gibi ızgara sistemlerde çalışırken görünümlerde kullanışlıdır. Bir Eloquent model koleksiyonunuz olduğunu ve ızgarada göstermek istediğinizi düşünün.

collapse()

collapse metodu koleksion dizilerini tek bir düz koleksiyon haline getirir.

contains()

contains metodu verilen elemanın dizi içinde olup olmadığını belirler.

Metodu key/value çiftini de geçirebilirsiniz.

Son olarak, kendi doğrulama tersiniz için metoda geri çağırım da geçirebilirsiniz.

count()

count metodu koleksiyondaki toplam elemanların sayısını yöner.

diff()

diff metodu kolleksiyonla başka bir koleksiyon veya düz PHP dizisini karşılaştırır.

each()

each metodu verilen geri çağrımı koleksiyondaki öğeleri tekrarlar.

every()

every metodu, her n’inci öğeden oluşan yeni bir koleksiyon oluşturur.

İkinci argüman olarak isteğe bağlı uzatma geçirebilirsiniz.

filter()

filter metodu, verilen geribildirimle filtrelenen elemenalardan yalnızca teste uyan elemanları filtreler.

filter metodunun tersi için reject metoduna bakabilirsiniz.

first()

first metodu, koleksiyondaki teste uyan ilk elemanı döndürür.

Ayrıca first metodunu koleksiyonunun ilk elemanınını almak için argümansız da çağırabilirsiniz. Koleksiyon boş ise null döndürülür:

flatten()

flatten metodu, çok boyutlu koleksiyonu tek boyuyluya çevirir.

flip()

flip metodu, koleksiyonun anahtarları ile karşılık gelen değerlerini yerdeğiştirir.

forget()

forget metodu, anahtarı verilen elementi koleksiyondan kaldırır.

Diğer bir çok koleksiyon metodlarından farklı olarak, forget değiştirilen yeni bir koleksiyon dönmez; çağrıldığı koleksiyonu değiştirir.

forPage()

forPage sayfa numarası verilen elemanları gösterecek yeni bir koleksiyon döndürür.

Bu metod sırasıyla sayfa numarası ve sayfada gösterilecek eleman sayısı verilir.

get()

get metodu verilen anahtardaki elemanı döner. Anahtar yok ise null döndürülür.

Opsiyonel olarak varsayılan değeri ikinci argüman olarak verebilirsiniz.

Varsayılan değer olarak geribildirim de verebilirsiniz. Verilen anahtar yoksa geribildirim sonucu döndürülecek.

groupBy()

groupBy metodu, anahtarı verilen koleksiyon elemanlarını gruplar.

Anahtar olarak string geçirmeye ek olarak, geri bildirim de geçirebilirsiniz.

has()

has metodu, verilen anahtarın koleksiyonda olup olmadığını kontrol eder.

implode()

implode metodu, koleksiyonun elemanlarını birleştirir.

intersect()

intersect metodu, verilen dizi veya koleksiyonda olmayan değerleri kaldırır.

Gördüğünüz gibi, sonuç koleksiyonu koleksiyonunun orjinal anahtarlarını saklayacaktır.

isEmpty()

isEmpty metodu, koleksiyon boş ise true, aksi halde false döndürür.

keyBy()

Verilen anahtarla koleksiyonu tekrar düzenler.

Eğer birçok eleman aynı anaytara sahipse, yalnızca sonuncu olan yeni koleksiyonda yer alacaktır.

Kendi geri bildirimizi de geçireblirsiniz.

last()

last metodu, koleksyondaki teste uyan son elemanı döndürür

Ayrıca last metodunu koleksiyonunun son elemanınını almak için argümansız da çağırabilirsiniz. Koleksiyon boş ise null döndürülür:

map()

map metodu, koleksiyon içinde ilerleyerek her değeri verilen geribildirime aktarır.

Not: Çoğu koleksiyon metodu gibi map metodu da koleksiyonunun yeni bir örneğini döndürür, çağrılan koleksiyonu değiştirmez. Orjinal koleksiyonu değiştirmek istiyorsanız transform metodunu kullanabilirsiniz.