SevkiBilge

PHP'de büyük projelerde namespace yapısını nasıl düzenliyorsunuz?

FatihColak
· 5 gün önce · 2 görüntülenme
Merhaba arkadaşlar,

Uzun süredir PHP ile uğraşıyorum ama son zamanlarda iyice büyüyen bir projede namespace düzenlemesi kafamı karıştırmaya başladı. Özellikle PSR-4 standardını temel alıyorum ama proje büyüdükçe klasör yapısı ve namespace'ler arasında bağımlılıkları yönetmek zorlaşıyor. Mesela şöyle bir yapım var: App\Modules\Payment\Services, App\Modules\Payment\Models, App\Core\Services... Bir süre sonra hangi namespace'in hangi katmana ait olduğu karışabiliyor. Özellikle modüller arası geçişlerde extends veya implements kullanırken gereksiz uzun use ifadeleri oluşuyor. Siz bu tür büyük projelerde namespace yapınızı nasıl kurguluyorsunuz? Modülleri tamamen izole mi tutuyorsunuz, yoksa ortak bir core katman mı kullanıyorsunuz?

Bir diğer sorun da autoloading performansı. Composer ile PSR-4 kullanıyorum ama bazen aynı namespace altında çok fazla dosya olunca yavaşlama oluyor mu? Özellikle entity veya repository sınıflarının sayısı arttıkça bunu optimize etmek için farklı bir yol izleyen var mı? Mesela namespace'leri domain bazında mı ayırmalıyız yoksa teknik katman bazında mı (Models, Services, Controllers gibi)? Şu an ben domain bazlı yapıyorum ama bazen iki farklı domain aynı servisi kullanmak isteyince çakışmalar oluyor.

Son olarak, büyük takımlarla çalışırken namespace standartlarını nasıl belirliyorsunuz? Ben genelde bir doküman hazırlayıp ekip arkadaşlarıma iletiyorum ama herkesin kendi kod yazma alışkanlığı olduğu için bazen uyum sorunu yaşıyoruz. Özellikle interface ve trait'leri namespace'e yerleştirirken nelere dikkat ediyorsunuz? Kendi projelerinizde denediğiniz ve işe yarayan bir namespace organizasyonu örneği paylaşabilir misiniz? Yardımlarınız için şimdiden teşekkürler.
2 yanıt
YusufKoc
5 gün önce
Genelde proje kökünde vendor klasörü altında firma/proje/modül şeklinde ilerliyorum. Composer ile otoloading ayarlarını doğru yapınca işler çok kolaylaşıyor.
IhsanBayrakTech
4 gün önce
Ben de aynı şekilde yapıyorum, hatta bir adım daha ileri gidip PSR-4 standartlarını kesinlikle takip ediyorum. Otoloader mapping’i doğru yapınca uzun vadede proje büyüdükçe namespace karmaşası yaşamıyorsun.

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