Projects [SHOW]
Architecture Concepts
Einführung
Laravels Contracts sind eine Reihe von Schnittstellen, die die Kernleistungen des Frameworks definieren. So definiert beispielsweise ein Illuminate\Contracts\Queue\Queue Contract die Methoden, die für die Warteschlange von Jobs benötigt werden, während der Illuminate\Contracts\Mail\Mailer Contract die Methoden definiert, die für den E-Mail-Versand benötigt werden.
Jeder Contract hat eine entsprechende Implementierung, die durch das Framework bereitgestellt wird. Beispielsweise bietet Laravel eine Warteschlangenimplementierung mit einer Vielzahl von Treibern und eine Mailerimplementierung, die von SwiftMailer unterstützt wird.
Alle Laravel-Contracts leben in ihrem eigenen GitHub-Repository. Dies bietet einen schnellen Anhaltspunkt für alle verfügbaren Contracts sowie ein einzelnes, entkoppeltes Package, das von Package-Entwicklern verwendet werden kann.
Contracts Vs. Facades
Die Facades- und Helferfunktionen von Laravel bieten eine einfache Möglichkeit, die Dienste von Laravel zu nutzen, ohne dass Sie einen Tipp geben und Verträge aus dem Service-Container lösen müssen. In den meisten Fällen hat jede Facade einen gleichwertigen Contract.
Im Gegensatz zu Facades, die nicht erfordern, dass Sie sie im Konstruktor Ihrer Klasse benötigen, können Sie mit Contracts explizite Abhängigkeiten für Ihre Klassen definieren. Einige Entwickler ziehen es vor, ihre Abhängigkeiten explizit auf diese Weise zu definieren und bevorzugen daher Contracts , während andere Entwickler den Komfort von Facades genießen.