Her modül bağımsız çalışır. Lego parçaları gibi birleştirilebilir, ayrılabilir.
Bir modül, belirli bir işlevi yerine getiren bağımsız kod paketidir. Örneğin "Blog Modülü" sadece blog yazılarıyla ilgilenir. Kapatırsanız site çalışmaya devam eder, sadece blog özelliği olmaz. Lego parçası gibi düşünün.
Laravel Modules (nWidart) paketi kullanılıyor. Her modül kendi Controller, Model, Migration,
View, Route dosyalarını içerir. Modules/ klasöründe yaşar.
ServiceProvider ile Laravel'e entegre olur.
Laravel uygulaması başlatıldığında 30 modül nasıl yüklenir? İşte ServiceProvider mekanizması:
Sistem Modules/ klasöründeki tüm module.json dosyalarını tarar. Her dosyadan modül adı, durumu (aktif/pasif), öncelik sırası okunur.
Her modülün ServiceProvider'ı çağrılır. register() metodu çalışır - bağımlılıklar Container'a kaydedilir. boot() metodu ile route, view, config yüklenir.
Her modülün routes/web.php ve routes/api.php dosyaları ana route tablosuna eklenir. Middleware grupları uygulanır, prefix'ler atanır.
Modül view'ları namespace ile kaydedilir. view('blog::index') çağrıldığında Modules/Blog/resources/views/index.blade.php yüklenir.
Modül migration'ları sistem migration path'ine eklenir. php artisan migrate çalıştırıldığında tüm modül tabloları oluşturulur/güncellenir.
Pasif modüller yüklenmez. module.json'daki "active": false yapılırsa o modülün route'ları, view'ları, controller'ları hiç çalışmaz. Sistem hafifler.