Laravel - Verträge
Laravel-Verträge sind eine Reihe von Schnittstellen mit verschiedenen Funktionen und Kerndiensten, die vom Framework bereitgestellt werden.
Zum Beispiel, Illuminate\Contracts\Queue\Queue Vertrag verwendet eine Methode, die für das Einreihen von Jobs und benötigt wird Illuminate\Contracts\Mail\Mailer Verwendet die Methode zum Senden von E-Mails.
Jeder definierte Vertrag beinhaltet die entsprechende Umsetzung des Frameworks. Alle Laravel-Verträge sind wie unten erwähnt im GitHub-Repository verfügbar.
https://github.com/illuminate/contracts
Dieses Repository bietet eine Vielzahl von Verträgen, die im Laravel-Framework verfügbar sind und heruntergeladen und entsprechend verwendet werden können.
Wichtige Punkte
Beachten Sie bei der Arbeit mit Laravel-Verträgen die folgenden wichtigen Punkte:
Im Konstruktor einer Klasse müssen Fassaden definiert werden.
Verträge werden in den Klassen explizit definiert, und Sie müssen die Verträge nicht in Konstruktoren definieren.
Beispiel
Betrachten Sie den unten genannten Vertrag für die 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 Funktionsdose, die a parameter genannt ability und arguments welches die Benutzeridentifikation in Form eines verwendet array.
Sie müssen einen Vertrag wie in der folgenden Syntax definiert definieren -
interface <contract-name>
Verträge werden wie Fassaden verwendet, um robuste, bewährte Laravel-Anwendungen zu erstellen. Es gibt verschiedenepractical differences mit 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;
}
}
Der 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 eine Codebasis zu ändern.