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.
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.