SevkiBilge

Sınıf Yapısında Repository Pattern Kullanımı Hakkında Yardım

OguzKilicWeb
· 5 gün önce · 2 görüntülenme
Arkadaşlar merhaba, uzun süredir PHP ile proje geliştiriyorum ama özellikle büyük ölçekli uygulamalarda sınıf yapılarını daha düzenli hale getirmek için Repository Pattern kullanmaya karar verdim. Şu anki projemde temel CRUD işlemlerini yöneten bir UserRepository sınıfı oluşturdum ama tam olarak doğru yolda mıyım emin değilim. Mesela repository içinde sadece veritabanı sorgularını mı tutmalıyım yoksa iş mantığıyla ilgili bazı filtreleme işlemlerini de buraya eklemeli miyim? Bazı kaynaklarda repository'nin sadece veri kaynağına erişim sağlaması gerektiği yazıyor, bazılarında ise iş mantığının bir kısmını da içerebileceği söyleniyor. Siz bu konuda ne düşünüyorsunuz?

Kendi deneyimlerime göre, repository pattern'i kullanırken en çok zorlandığım nokta katmanlar arasındaki bağımlılıkları azaltmak oldu. Örneğin, UserRepository içinde bir getUserWithOrders metodum var, bu metot hem kullanıcıyı hem de siparişlerini tek sorguda getiriyor. Acaba bu metodu ayrı bir OrderRepository'e mi taşımalıyım yoksa bu şekilde kullanmak daha mı pratik? Ayrıca repository'lerin constructor'larına başka repository'leri enjekte etmek ne kadar doğru? Bu tarz durumlarda service layer kullanmak daha mı mantıklı?

Son olarak, repository pattern ile birlikte unit of work pattern'ini de kullanmayı düşünüyorum ama bu iki pattern'in birlikte çalışması konusunda kafam karışık. Özellikle birden fazla repository ile çalışırken transaction yönetimini nasıl sağlamalıyım? Doctrine gibi bir ORM kullanmıyorum, direkt PDO ile çalışıyorum. Bu durumda repository pattern'in faydasını tam olarak görebilir miyim? Yoksa daha basit bir yapı mı tercih etmeliyim? Tecrübeli arkadaşların önerilerine çok ihtiyacım var, teşekkürler.
2 yanıt
SadiTemizOne672
5 gün önce
Repository pattern kullanmak bence akıllıca bir tercih, özellikle veritabanı işlemlerini soyutlamak ve test edilebilirliği artırmak istiyorsan. Ben de bir projede denemiştim, başta biraz kafa karıştırıcı gelse de sonra işleri çok kolaylaştırdı. Hangi dil veya ORM ile çalışıyorsun?
IhsanSahinHQ
2 gün önce
Abi kesinlikle katılıyorum, ilk başta karışık gelebilir ama proje büyüdükçe repository pattern’ın ne kadar kurtarıcı olduğunu anlıyorsun. Hele bir de birim testleri ekleyince tadından yenmiyor.

Yanıt yazmak için giriş yapın.