Heim >PHP-Framework >Laravel >Wozu dient der Laravel-Vertrag?
In Laravel beziehen sich Verträge auf eine Reihe von Schnittstellen, die die vom Framework bereitgestellten Kerndienste definieren, um die Entwicklung von Schnittstellenentwicklern Dritter zu erleichtern. Die Implementierung aller Verträge stellt alle Kernaufgaben des Frameworks dar, und die Spezifikationen können verstanden werden durch die Vertragsfunktion.
Die Betriebsumgebung dieses Artikels: Windows 10-System, Laravel Version 6, Dell G3-Computer.
Was ist der Vertrag?
Der Vertrag in Laravel bezieht sich auf eine Reihe von Schnittstellen, die vom Framework bereitgestellt werden und Kerndienste definieren, z. B. Cache-, Warteschlangen- und Protokollschnittstellen ist die Schnittstelle
Warum müssen wir die Schnittstelle definieren?
Der Zweck der Definition der Schnittstelle besteht darin, sie zu entkoppeln der Memcached-Cache-Treiber
use Illuminate\Contracts\Cache\Repository as Cache; class Repository{ /** * 创建一个新的Repository实例 * * @param Cache $cache * @return void */ public function __construct(Cache $cache) { $this->cache = $cache; } }
Definieren Sie nicht die Schnittstelle
Wenn wir die Schnittstelle nicht definieren, müssen wir so schreiben
use Memcached; class Repository{ /** * 创建一个新的Repository实例 * * @param Cache $cache * @return void */ public function __construct(Memcached $cache) { $this->cache = $cache; } }
Wenn wir also den Cache-Treiber auf Redis umstellen müssen, müssen wir zum Controller gehen und ihn ändern die Abhängigkeitsinjektionstypkonvention für Redis, da die Implementierung von Redis nicht unbedingt genau mit der von Memcached übereinstimmt, was bedeutet, dass der Memcached-Cache eng mit Laravel gekoppelt ist.
Was gilt als lose Kopplung? Was gilt als lose Kopplung? Das System wird aktualisiert und eine Implementierung muss geändert werden (z. B. ein Upgrade von Memcached auf Redis). Die Codebasis kann nicht geändert werden, nur die Konfiguration muss geändert werden. Es ist lose gekoppelt, wenn das Upgrade durch einfaches Ändern abgeschlossen werden kann!
Ein Vertrag hat zwei oder mehr Implementierungen
Persönlich sollten die entsprechenden Implementierungen seit Abschluss des Vertrags zwei oder mehr Implementierungen sein, oder es wird in naher Zukunft zwei oder mehr Implementierungen geben. Der Vertrag ist hier, um so viele festzulegen Implementierungen. Wenn es nur eine Implementierung gibt, scheint der Vertrag nutzlos zu sein!
ZusammenfassungDer Definitionsvertrag ist eine Vereinbarung über die Implementierung einer Reihe von Funktionen, um die Entwicklung von Schnittstellenentwicklern von Drittanbietern zu erleichtern.
Der Vertrag ähnelt eher einem Verzeichnisindex eines Frameworks und der Implementierung aller Verträge bilden den Kern des Framework-Dienstes, und Sie können durch den Vertrag schnell verstehen, was dieser Funktionssatz bewirkt. Für die Cache-Klasse dient der Cache-Vertrag dazu, die Funktionen festzulegen, die von verschiedenen Cache-Implementierungen (Memcached, Redis, Dateicache)【Verwandte Empfehlung:
Laravel-Video-Tutorial】
Das obige ist der detaillierte Inhalt vonWozu dient der Laravel-Vertrag?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!