Maison  >  Article  >  cadre php  >  A quoi sert le contrat Laravel

A quoi sert le contrat Laravel

WBOY
WBOYoriginal
2022-02-24 15:06:152392parcourir

Dans Laravel, les contrats font référence à une série d'interfaces qui définissent les services de base fournis par le framework pour faciliter le développement de développeurs d'interfaces tiers. La mise en œuvre de tous les contrats constitue toutes les tâches principales du framework, et les spécifications peuvent être comprises. à travers la fonction contractuelle.

A quoi sert le contrat Laravel

L'environnement d'exploitation de cet article : système Windows 10, Laravel version 6, ordinateur Dell G3.

Quelle est l'utilisation du contrat Laravel ?

Qu'est-ce que le contrat ?

Le contrat dans Laravel fait référence à une série d'interfaces fournies par le framework qui définissent les services de base, tels que les interfaces de cache, de file d'attente et de journalisation. est l'interface

Pourquoi devons-nous définir l'interface ?

Le but de la définition de l'interface est de découpler

Lorsque nous comptons sur l'injection d'instances de cache, Laravel l'implémente comme suit :

Par exemple : nous choisissons d'utiliser le pilote de cache memcached

use Illuminate\Contracts\Cache\Repository as Cache;
class Repository{
    /**
     * 创建一个新的Repository实例
     *
     * @param  Cache  $cache
     * @return void
     */
    public function __construct(Cache $cache)
    {
        $this->cache = $cache;
    }
}

Ne définissez pas l'interface

Si nous ne définissons pas l'interface, nous devons écrire comme ça

use Memcached;
class Repository{
    /**
     * 创建一个新的Repository实例
     *
     * @param  Cache  $cache
     * @return void
     */
    public function __construct(Memcached $cache)
    {
        $this->cache = $cache;
    }
}

Donc, lorsque nous devons basculer le pilote de cache vers redis, nous devons aller au contrôleur et changer la convention de type d'injection de dépendance avec Redis, car l'implémentation de Redis n'est pas nécessairement exactement la même que celle de Memcached, ce qui signifie que le cache Memcached est étroitement couplé à Laravel

Qu'est-ce que le couplage lâche

Qu'est-ce que le couplage lâche Lorsque le système est ? mis à niveau et qu'une implémentation doit être modifiée (comme la mise à niveau de Memcached vers Redis), la base de code ne peut pas être modifiée, seule la configuration doit être modifiée. Elle est faiblement couplée lorsque la mise à niveau peut être effectuée en la modifiant simplement !

Un contrat a deux ou plusieurs implémentations

Personnellement, puisque le contrat est finalisé, les implémentations correspondantes devraient être deux ou plusieurs implémentations, ou il y aura deux ou plusieurs implémentations dans un avenir proche, le contrat est là pour en stipuler autant mises en œuvre. S’il n’y a qu’une seule implémentation, on a l’impression que le contrat ne sert à rien !

Résumé

Le contrat de définition est un accord pour la mise en œuvre d'un ensemble de fonctions visant à faciliter le développement de développeurs d'interfaces tiers

Le contrat s'apparente davantage à un index d'annuaire d'un framework, et à la mise en œuvre de tous contracts constitue le cœur du service framework, et vous pouvez rapidement comprendre ce que fait cet ensemble de fonctions grâce au contrat

Pour la classe cache, le contrat de cache consiste à stipuler les fonctions qui doivent être implémentées par diverses implémentations de cache (Memcached, Redis, cache de fichiers)

【Connexe recommandé : 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