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.
L'environnement d'exploitation de cet article : système Windows 10, Laravel version 6, ordinateur Dell G3.
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!