Laravel-Verträge sind eine Reihe von Schnittstellen mit verschiedenen Funktionalitäten und Kerndiensten, die vom Framework bereitgestellt werden.
Zum Beispiel verwendet der Vertrag IlluminateContractsQueueQueue eine Methode, die zum Einreihen von Aufträgen benötigt wird, und IlluminateContractsMailMailer verwendet die Methode zum Versenden von E-Mails.
Jeder definierte Vertrag beinhaltet die entsprechende Umsetzung des Frameworks. Alle Laravel-Verträge sind im GitHub-Repository verfügbar, wie unten erwähnt −
https://github.com/illuminate/contracts
Dieses Repository stellt eine Vielzahl von Verträgen bereit, die im Laravel-Framework verfügbar sind und heruntergeladen und entsprechend verwendet werden können.
Bitte beachten Sie bei der Arbeit mit Laravel-Verträgen die folgenden wichtigen Punkte −
Es ist zwingend erforderlich, Fassaden im Konstruktor einer Klasse zu definieren.
Verträge werden explizit in den Klassen definiert und Sie müssen die Verträge nicht in Konstruktoren definieren.
Beachten Sie den unten aufgeführten Vertrag zur Autorisierung in Laravel −
<?php namespace Illuminate\Contracts\Auth\Access; interface Authorizable{ /** * Determine if the entity has a given ability. * * @param string $ability * @param array|mixed $arguments * @return bool */ public function can($ability, $arguments = []); }
Der Vertrag verwendet eine Funktion, die einen Parameter namens ability und arguments enthält, der die Benutzeridentifikation in Form eines Array verwendet.
Sie müssen einen Vertrag wie in der folgenden Syntax gezeigt definieren −
interface <contract-name>
Verträge werden wie Fassaden verwendet, um robuste, gut getestete Laravel-Anwendungen zu erstellen. Es gibt verschiedene praktische Unterschiede bei der Nutzung von Verträgen und Fassaden.
Der folgende Code zeigt die Verwendung eines Vertrags zum Zwischenspeichern eines Repositorys −
<?php namespace App\Orders; use Illuminate\Contracts\Cache\Repository as Cache; class Repository{ /** * The cache instance. */ protected $cache; /** * Create a new repository instance. * * @param Cache $cache * @return void */ public function __construct(Cache $cache) { $this->cache = $cache; } }
Vertrag enthält keine Implementierung und neue Abhängigkeiten; Es ist einfach, eine alternative Implementierung eines bestimmten Vertrags zu schreiben, sodass ein Benutzer die Cache-Implementierung ersetzen kann, ohne die Codebasis zu ändern.
Das obige ist der detaillierte Inhalt vonLaravel – Verträge. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!