Différence : 1. Le contrat fait référence à une série d'interfaces fournies par le framework qui définissent les services de base, tandis que la façade fournit des interfaces statiques pour les classes du conteneur de services IoC 2. Le contrat peut être considéré comme l'interface de définition de méthode ; de la fonction framework, qui stocke de grandes méthodes Most, et la façade fournit des méthodes, fournit des appels statiques et n'a pas besoin d'injecter d'interfaces.
L'environnement d'exploitation de ce tutoriel : système Windows 10, version Laravel 6, ordinateur DELL G3.
Introduction
Les contrats de Laravel sont un ensemble d'interfaces fournies par le framework et définissent les services de base. Par exemple, le contrat illustreContractsQueueQueue définit les méthodes requises pour mettre en file d'attente une tâche, tandis que le contrat illustreContractsMailMailer définit les méthodes requises pour envoyer du courrier. Et les contrats sont aussi appelés contrats
Dans notre étude précédente, nous avons appris de nombreuses fonctions auxiliaires et méthodes simples fournies par la façade Façades, qui peuvent implémenter des méthodes sans indications de type. Dans la plupart des cas, chaque façade a des méthodes de contrat correspondantes, contrairement aux façades. , les contrats vous permettent d'exposer les dépendances pour les définitions de classe.
Quand utiliser les contrats
Comme indiqué ailleurs, de nombreuses décisions concernant l'utilisation de contrats ou de façades dépendront de vos préférences personnelles et des préférences de l'équipe de développement. Les contrats et les façades peuvent être utilisés pour créer des applications Laravel puissantes et bien testées. Tant que vous vous concentrez sur le fait qu'une classe ne doit avoir qu'une seule responsabilité, vous constaterez que la différence réelle entre l'utilisation de contrats ou de façades est en réalité très faible.
Comment utiliser le contrat
Alors, comment mettre en œuvre le contrat ? C'est en fait très simple.
De nombreuses classes dans Laravel sont résolues via le conteneur de services, notamment les contrôleurs, les écouteurs d'événements, les middlewares, les tâches de file d'attente et même les fermetures de routage. Par conséquent, pour implémenter le contrat, il vous suffit de « taper un indice » sur l'interface dans le constructeur de la classe résolue.
Par exemple, consultez cet écouteur d'événement :
<?php namespace App\Listeners; use App\Events\OrderWasPlaced; use App\Models\User; use Illuminate\Contracts\Redis\Factory; class CacheOrderInformation { /** * Redis 工厂实现 */ protected $redis; /** * 创建一个事件处理实例 * * @param Factory $redis * @return void */ public function __construct(Factory $redis) { $this->redis = $redis; } /** * 处理事件 * * @param OrderWasPlaced $event * @return void */ public function handle(OrderWasPlaced $event) { // } }
La différence entre contrat et façade
Le contrat fait en fait référence à une série d'interfaces fournies par le framework qui définissent les services de base. Le mot-clé est cette interface. ci-dessus, vous pouvez comprendre quelles fonctions cette interface fournit. Nous pouvons considérer le contrat comme l'interface de définition de méthode de la fonction framework. Cette interface stocke la plupart des méthodes que nous devons utiliser
La façade fournit également des méthodes. nous voulons utiliser la méthode d'interface, nous devons injecter l'interface correspondante, ce qui est très gênant, donc la façade est née, fournissant des appels statiques et pas besoin d'injecter l'interface.
[Recommandations associées : tutoriel vidéo laravel]
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!