Maison  >  Article  >  cadre php  >  Laravel - Contrats

Laravel - Contrats

王林
王林original
2024-08-27 10:50:50698parcourir

Les contrats Laravel sont un ensemble d'interfaces avec diverses fonctionnalités et services de base fournis par le framework.

Par exemple, le contrat IlluminateContractsQueueQueue utilise une méthode nécessaire pour mettre les tâches en file d'attente et IlluminateContractsMailMailer utilise la méthode pour envoyer des e-mails.

Chaque contrat défini inclut la mise en œuvre correspondante du cadre. Tous les contrats Laravel sont disponibles dans le référentiel GitHub comme mentionné ci-dessous −

https://github.com/illuminate/contracts

Ce référentiel fournit une variété de contrats disponibles dans le framework Laravel qui peuvent être téléchargés et utilisés en conséquence.

Points importants

Lorsque vous travaillez avec des contrats Laravel, veuillez noter les points importants suivants −

  • Il est obligatoire de définir les façades dans le constructeur d'une classe.

  • Les contrats sont explicitement définis dans les classes et vous n'avez pas besoin de définir les contrats dans les constructeurs.

Exemple

Considérez le contrat utilisé pour l'autorisation dans Laravel qui est mentionné ci-dessous −

<?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 = []);
}

Le contrat utilise une fonction can qui comprend un paramètre nommé capacité et des arguments qui utilise l'identification de l'utilisateur sous la forme d'un tableau.

Vous devrez définir un contrat comme indiqué dans la syntaxe ci-dessous −

interface <contract-name>

Les contrats sont utilisés comme des façades pour créer des applications Laravel robustes et bien testées. Il existe diverses différences pratiques avec l'utilisation des contrats et des façades.

Le code suivant montre l'utilisation d'un contrat pour la mise en cache d'un référentiel −

<?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;
   }
}

Contract ne contient aucune implémentation ni de nouvelles dépendances ; il est facile d'écrire une implémentation alternative d'un contrat spécifié, ainsi un utilisateur peut remplacer l'implémentation du cache sans modifier aucune base de code.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Laravel - FaçadesArticle suivant:Laravel - Façades