Unterschied: 1. Der Vertrag bezieht sich auf eine Reihe von Schnittstellen, die vom Framework bereitgestellt werden und Kerndienste definieren, während die Fassade statische Schnittstellen für die Klassen des IoC-Dienstcontainers bereitstellt. 2. Der Vertrag kann als Methodendefinitionsschnittstelle betrachtet werden der Framework-Funktion, die eine große Anzahl der meisten Methoden speichert, und die Fassade stellt Methoden bereit, stellt statische Aufrufe bereit und muss keine Schnittstellen injizieren.
Die Betriebsumgebung dieses Tutorials: Windows 10-System, Laravel 6-Version, DELL G3-Computer.
Einführung
Laravels Verträge sind eine Reihe von Schnittstellen, die vom Framework bereitgestellt werden und Kerndienste definieren. Beispielsweise definiert der Vertrag „illustraContractsQueueQueue“ die Methoden, die für die Warteschlange eines Auftrags erforderlich sind, während der Vertrag „illustraContractsMailMailer“ die Methoden definiert, die für das Versenden von E-Mails erforderlich sind. Und Verträge werden auch Verträge genannt
In unserer vorherigen Studie haben wir viele Hilfsfunktionen und einfache Methoden kennengelernt, die von der Fassadenfassade bereitgestellt werden und Methoden ohne Typhinweise implementieren können. Im Gegensatz zu Fassaden verfügt jede Fassade über entsprechende Vertragsmethoden Mit Verträgen können Sie Abhängigkeiten für Klassendefinitionen offenlegen
Wann Verträge verwendet werden sollen
Wie bereits an anderer Stelle erläutert, hängen viele Entscheidungen über die Verwendung von Verträgen oder Fassaden von persönlichen Vorlieben und den Vorlieben des Entwicklungsteams ab. Sowohl Contracts als auch Facades können verwendet werden, um leistungsstarke und gut getestete Laravel-Anwendungen zu erstellen. Solange Sie sich auf die Tatsache konzentrieren, dass eine Klasse eine einzige Verantwortung haben sollte, werden Sie feststellen, dass der tatsächliche Unterschied zwischen der Verwendung von Verträgen oder Fassaden tatsächlich sehr gering ist.
So nutzen Sie den Vertrag
Wie wird der Vertrag umgesetzt? Es ist eigentlich ganz einfach.
Viele Klassen in Laravel werden über den Service-Container aufgelöst, darunter Controller, Event-Listener, Middleware, Warteschlangenaufgaben und sogar Routing-Abschlüsse. Um den Vertrag zu implementieren, geben Sie daher einfach einen „Typhinweis“ für die Schnittstelle im Konstruktor der aufgelösten Klasse ein.
Sehen Sie sich zum Beispiel diesen Ereignis-Listener an:
<?php namespace App\Listeners; use App\Events\OrderWasPlaced; use App\Models\User; use Illuminate\Contracts\Redis\Factory; class CacheOrderInformation { /** * Redis 工厂实现 */ protected $redis; /** * 创建一个事件处理实例 * * @param Factory $redis * @return void */ public function __construct(Factory $redis) { $this->redis = $redis; } /** * 处理事件 * * @param OrderWasPlaced $event * @return void */ public function handle(OrderWasPlaced $event) { // } }
Der Unterschied zwischen Vertrag und Fassade
Vertrag bezieht sich tatsächlich auf eine Reihe von Schnittstellen, die vom Framework bereitgestellt werden und Kerndienste definieren. Das Schlüsselwort ist diese Schnittstelle Oben können Sie verstehen, welche Funktionen diese Schnittstelle bietet. Diese Schnittstelle speichert die meisten Methoden, die wir verwenden müssen Wenn wir die Schnittstellenmethode verwenden möchten, müssen wir die entsprechende Schnittstelle einfügen, was sehr mühsam ist. Daher wurde die Fassade geboren, die statische Aufrufe bereitstellt und keine Schnittstelle benötigt.
[Verwandte Empfehlungen:
Laravel-Video-TutorialDas obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Vertrag und Fassade in Laravel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!