Zum Inhalt springen

Glossar

Dependency Injection in Laravel: Abhängigkeiten werden gereicht

Ein Prinzip, bei dem ein Programmteil bekommt, was er braucht, statt es sich selbst zu beschaffen.

Ein Programmteil braucht fast immer andere Teile. Eine Verbindung zur Datenbank, einen Dienst zum Versenden von E-Mails, einen Zugang zu einem Fremdsystem. Die Frage ist, wie er daran kommt. Entweder er beschafft sie sich selbst, oder sie werden ihm beim Erzeugen übergeben. Das Zweite heißt Dependency Injection.

Der Unterschied klingt akademisch und hat sehr praktische Folgen. Wer sich seine Abhängigkeiten selbst holt, legt fest, welche es sind. Wer sie gereicht bekommt, akzeptiert alles, was die passende Form hat.

Was das konkret bringt

Zwei Dinge. Erstens Austauschbarkeit: Ein anderer Anbieter für Versand oder Zahlung wird an einer Stelle eingetragen, statt an dreißig Stellen im Code gesucht.

Zweitens Prüfbarkeit. In einem automatisierten Test will man keine echten E-Mails verschicken und kein echtes Fremdsystem anrufen. Werden die Abhängigkeiten gereicht, setzt der Test einfach einen Ersatz ein. Werden sie selbst geholt, bleibt oft nur, den Test wegzulassen.

Zusammengesetzt wird das in Laravel vom Service Container, der weiß, wie jeder Dienst zu erzeugen ist.

FAQ

Häufige Fragen

Klingt nach mehr Aufwand für dasselbe Ergebnis.
Beim ersten Hinsehen ja. Der Unterschied zeigt sich, sobald etwas ausgetauscht werden soll: ein anderer Versanddienstleister, ein anderes Zahlungsverfahren, oder im Test ein Ersatz, der keine echten E-Mails verschickt. Wer sich seine Abhängigkeiten selbst holt, muss dafür den Code ändern. Wer sie gereicht bekommt, nicht.

Verwandt

Begriffe, die dazugehören

Projekt oder Frage?

Schreiben Sie uns, worum es geht. Sie bekommen eine Einschätzung von jemandem, der selbst mit Laravel arbeitet — nicht vom Vertrieb.