Maison >cadre php >Laravel >Quelle est la différence entre contrat et façade dans Laravel

Quelle est la différence entre contrat et façade dans Laravel

WBOY
WBOYoriginal
2022-02-15 16:29:453094parcourir

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.

Quelle est la différence entre contrat et façade dans Laravel

L'environnement d'exploitation de ce tutoriel : système Windows 10, version Laravel 6, ordinateur DELL G3.

Quelle est la différence entre les contrats et les façades dans laravel

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!

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