Heim  >  Artikel  >  PHP-Framework  >  Wozu dient der Laravel-Vertrag?

Wozu dient der Laravel-Vertrag?

WBOY
WBOYOriginal
2022-02-24 15:06:152438Durchsuche

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.

Wozu dient der Laravel-Vertrag?

Die Betriebsumgebung dieses Artikels: Windows 10-System, Laravel Version 6, Dell G3-Computer.

Wozu dient der Laravel-Vertrag?

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!

Zusammenfassung

Der 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn