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.
Bir oto tamir atölyesindeki alet panosudur. Tamirci "13 numara anahtar" istediğinde çırak (Container) panodan uygun anahtarı alır ve tamirciye uzatır.
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.
“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.”
// 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.