DI
Wat is het?
Dependency Injection (DI) is een ontwerppatroon waarbij een object zijn afhankelijkheden van buitenaf krijgt geleverd in plaats van ze zelf aan te maken. Het is een concrete vorm van Inversion of Control: de verantwoordelijkheid voor het maken en configureren van services ligt bij een container of provider (bijvoorbeeld de service container in Laravel) en niet bij de consument. In backend-webontwikkeling met PHP zorgt DI ervoor dat klassen minder gekoppeld zijn, makkelijker getest kunnen worden en dat implementaties (bijv. verschillende repository- of gateway-implementaties) eenvoudig verwisseld of geconfigureerd kunnen worden.
Praktisch voorbeeld
Stel dat je in Laravel een PaymentGateway-interface hebt en meerdere implementaties (Stripe, PayPal). In een ServiceProvider bind je de interface aan een concrete klasse, bijvoorbeeld: $this->app->bind(PaymentGateway::class, StripePayment::class). Vervolgens injecteer je de interface in een controller via de constructor: public function __construct(PaymentGateway $gateway) { $this->gateway = $gateway; }. Voor testen kun je dezelfde binding overschrijven met een mock of fake zodat je controller getest kan worden zonder echte betalingen te doen. Op deze manier vermijd je het gebruik van new binnen je controller en houd je code modulair en makkelijk te vervangen.
Test je kennis
Welke uitspraak over Dependency Injection in Laravel is correct?