Maison > développement back-end > tutoriel php > Utilisez des contrats Laravel pour construire un paquet Laravel 5 Twig

Utilisez des contrats Laravel pour construire un paquet Laravel 5 Twig

尊渡假赌尊渡假赌尊渡假赌
Libérer: 2025-02-18 10:48:11
original
1046 Les gens l'ont consulté

Contrats de Laravel 5: une plongée profonde dans les améliorations architecturales et l'application pratique avec Twig

Laravel 5 a introduit une amélioration architecturale importante: le package des contrats. Cet article explore la justification de ce changement et démontre un cas d'utilisation pratique en remplaçant le moteur de modèles de lame de Laravel avec des brindilles de symfony, en tirant parti de la puissance des contrats.

Use Laravel Contracts to Build a Laravel 5 Twig Package

Concepts clés:

  • Contrats en tant qu'interfaces: Les contrats Laravel sont des interfaces définissant des comportements spécifiques. Le conteneur IOC lie ces interfaces aux implémentations concrètes, permettant un échange facile des services sans modifier l'utilisation de l'interface.
  • Découplage et flexibilité: Cette approche favorise le couplage lâche, rendant le code plus modulaire, testable et adaptable aux différents fournisseurs de services. Le remplacement de la lame par des brindilles illustre cette flexibilité.
  • API stable: Les contrats fournissent une API stable, garantissant une interaction cohérente avec les composants du cadre, même lorsque les implémentations sous-jacentes changent.

Comprendre les contrats:

Un contrat, en substance, est une interface spécifiant un comportement. Cela s'aligne sur les principes de programmation orientés objet où les interfaces définissent les signatures de méthode sans détails d'implémentation. Le conteneur IOC de Laravel facilite les interfaces contraignantes (contrats) à leurs implémentations. Par exemple:

$this->app->bind('App\Contracts\EventPusher', 'App\Services\PusherEventPusher');
Copier après la connexion
Copier après la connexion

Le passage à un service différent (par exemple, fanout) nécessite uniquement de modifier la liaison:

$this->app->bind('App\Contracts\EventPusher', 'App\Services\FanoutEventPusher');
Copier après la connexion
Copier après la connexion

De nombreux services de base Laravel utilisent désormais des contrats, ce qui permet de remplacer facile. Par exemple, pour remplacer le service Illuminate/Mail, implémentez le contrat IlluminateContractsMail.

Remplacement de la lame par des brindilles en utilisant des contrats:

Le moteur de modèles par défaut de Laravel est la lame. Cet exemple montre le remplacement par une brindille symfony en utilisant des contrats.

1. Définition du package (Composer.json):

{
  "name": "whyounes/laravel5-twig",
  "description": "Twig for Laravel 5",
  "authors": [
    {
      "name": "RAFIE Younes",
      "email": "younes.rafie@gmail.com"
    }
  ],
  "require": {
    "twig/twig": "1.18.*"
  },
  "autoload": {
    "psr-0": {
      "RAFIE\": "src/"
    }
  }
}
Copier après la connexion
Copier après la connexion

2. Voir le fournisseur de services (twigViewServiceProvider.php):

Ce fournisseur enregistre le chargeur et l'environnement des brindilles dans le conteneur de service de Laravel.

// ... (Provider code as in original example) ...
Copier après la connexion

3. Afficher l'usine (twigfactory.php):

Cette usine implémente IlluminateContractsViewFactory et gère la création et le rendu de la création en utilisant Twig.

// ... (Factory code as in original example) ...
Copier après la connexion

4. Afficher l'implémentation (twigview.php):

Cette classe implémente IlluminateContractsViewView et agit comme un conteneur pour la vue brindille, interagissant avec le TwigFactory.

// ... (View code as in original example) ...
Copier après la connexion

5. Enregistrement du fournisseur de services (config / app.php):

Enregistrez le TwigViewServiceProvider et commentez le fournisseur de vue Laravel par défaut:

$this->app->bind('App\Contracts\EventPusher', 'App\Services\PusherEventPusher');
Copier après la connexion
Copier après la connexion

6. Utilisation de brindilles dans les routes (app / http / routes.php):

Maintenant, vous pouvez utiliser des modèles de brindilles:

$this->app->bind('App\Contracts\EventPusher', 'App\Services\FanoutEventPusher');
Copier après la connexion
Copier après la connexion

7. Modèle de brindille (ressources / vues / home.twig):

un modèle de brindille simple:

{
  "name": "whyounes/laravel5-twig",
  "description": "Twig for Laravel 5",
  "authors": [
    {
      "name": "RAFIE Younes",
      "email": "younes.rafie@gmail.com"
    }
  ],
  "require": {
    "twig/twig": "1.18.*"
  },
  "autoload": {
    "psr-0": {
      "RAFIE\": "src/"
    }
  }
}
Copier après la connexion
Copier après la connexion

Use Laravel Contracts to Build a Laravel 5 Twig Package

Conclusion:

Les contrats de Laravel 5 offrent un mécanisme puissant pour étendre et personnaliser le cadre. Le remplacement de la lame par des brindilles met en évidence les avantages de ce modèle architectural, conduisant à des applications plus propres, plus testables et flexibles. L'API cohérente fournie par les contrats simplifie le processus et garantit la maintenabilité. Le projet complet se trouve sur [Lien vers le projet].

Questions fréquemment posées (FAQ):

(La section FAQ de l'entrée d'origine est déjà bien écrite et complète. Aucune modification n'est nécessaire ici.)

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal