Laravel Service Container & Service Providers
Tüm sınıfların bağımlılıklarını tek merkezden yöneten ve otomatik enjekte eden sihirli kutudur.
5 Yaşındaki Çocuğa Anlatır Gibi (Analoji)
Bir oto tamir atölyesindeki alet panosudur. Tamirci "13 numara anahtar" istediğinde çırak (Container) panodan uygun anahtarı alır ve tamirciye uzatır.
Teknik ve Profesyonel Tanımı
Laravel'in kalbi olan IoC (Inversion of Control) konteyneridir. Service Provider'lar ise bu konteynere sınıfların (interface-implementation) nasıl kaydedileceğini ve bootstrap edileceğini belirten konfigürasyon sınıflarıdır.
Mülakatta Ne Demelisin? (Kurtarıcı Altın Cevap)
"Service Container, Laravel'de sınıfların bağımlılıklarını otomatik olarak çözümleyen (Dependency Injection) yapıdır. Service Provider'lar ise bu container'a servis bağlama (bind, singleton, scoped) ve boot etme işlemlerinin yapıldığı merkezi giriş kapılarıdır."
PHP (Laravel) Kod Örneği
// AppServiceProvider.php içinde bağlama:
public function register(): void
{
$this->app->bind(PaymentGatewayInterface::class, StripePaymentGateway::class);
$this->app->singleton(RedisClient::class, fn() => new RedisClient());
}
Sınıf içinde "new StripePaymentGateway()" yazarak bağımlılığı sıkı bağlamak (Tight Coupling) ve birim test yazılamaz hale getirmek.
İlgili Diğer Konular
Eloquent N+1 Sorgu Problemi & with() Eager Loading
Döngü içinde her satır için veritabanına ayrı ayrı koşup MyS...