Dans notre article précédent (Comment ajouter et implémenter des interfaces de traitement des paiements dans Laravel 11 : liaison codée en dur), nous avons exploré la première étape de la configuration des processeurs de paiement en codant en dur la liaison entre l'interface PaymentProcessorInterface. et une implémentation spécifique, comme StripePaymentProcessor.
Bien que cette approche soit simple et efficace pour les petites applications, elle manque de flexibilité pour des scénarios plus complexes dans lesquels vous pourriez avoir besoin de gérer plusieurs passerelles de paiement, mais l'utilisation d'une interface nous a permis de découpler le code afin de pouvoir l'étendre davantage. conformément au principe d'ouverture et de fermeture, pour injecter la fonctionnalité appropriée :
Dans cette deuxième partie, nous plongerons dans la liaison contextuelle, une technique plus avancée dans le conteneur de services de Laravel qui vous permet d'injecter différentes implémentations d'une interface en fonction du contexte spécifique. Ceci est utile lorsque le choix d'un processeur de paiement dépend de l'état de l'application, par exemple quel contrôleur traite la demande.
La liaison contextuelle dans Laravel permet au conteneur de services d'injecter différentes implémentations d'une interface en fonction de la classe ou du contexte qui la demande. Au lieu de nous appuyer sur une seule implémentation codée en dur, nous pouvons utiliser la liaison contextuelle pour résoudre différents processeurs de paiement en fonction du contrôleur ou d'un autre facteur contextuel.
Commençons par configurer les liaisons contextuelles dans AppServiceProvider. Nous lierons différents processeurs de paiement en fonction du contrôleur qui les demande. Par exemple, StripePaymentController utilisera StripePaymentProcessor et PayPalPaymentController utilisera PayPalPaymentProcessor.
Voici comment procéder :
use App\Contracts\PaymentProcessorInterface; use App\Services\StripePaymentProcessor; use App\Services\PayPalPaymentProcessor; public function register() { $this->app->when(StripePaymentController::class) ->needs(PaymentProcessorInterface::class) ->give(StripePaymentProcessor::class); $this->app->when(PayPalPaymentController::class) ->needs(PaymentProcessorInterface::class) ->give(PayPalPaymentProcessor::class); }
Que se passe-t-il ici ?
Avec la liaison contextuelle en place, chaque contrôleur peut désormais voir son processeur de paiement dédié injecté automatiquement. Voici comment configurer vos contrôleurs :
Exemple : StripePaymentController
use App\Contracts\PaymentProcessorInterface; class StripePaymentController extends Controller { protected $paymentProcessor; public function __construct(PaymentProcessorInterface $paymentProcessor) { $this->paymentProcessor = $paymentProcessor; } // Methods to handle Stripe-specific payments... }
Exemple : PayPalPaymentController
use App\Contracts\PaymentProcessorInterface; class PayPalPaymentController extends Controller { protected $paymentProcessor; public function __construct(PaymentProcessorInterface $paymentProcessor) { $this->paymentProcessor = $paymentProcessor; } // Methods to handle PayPal-specific payments... }
Dans les deux exemples, Laravel injecte automatiquement le bon processeur de paiement en fonction du contexte du contrôleur. Cela est dû à la liaison contextuelle configurée dans AppServiceProvider.
La liaison contextuelle est particulièrement utile lorsque vous savez quelle implémentation d'une interface utiliser en fonction de classes ou de contextes spécifiques, tels que les contrôleurs. Cela permet de garder votre code propre et gérable, en particulier lorsqu'il s'agit de plusieurs passerelles de paiement, chacune avec son propre contrôleur.
Dans cet article, nous avons exploré comment implémenter la liaison contextuelle dans Laravel 11 pour le traitement des paiements. Voici un bref récapitulatif des avantages de cette approche :
Dans le prochain article, nous explorerons le Factory Pattern, qui permet une sélection dynamique des processeurs de paiement au moment de l'exécution, offrant encore plus de flexibilité pour les applications complexes.
Restez à l'écoute pour la prochaine partie, où nous expliquerons comment utiliser les usines pour le traitement des paiements dans Laravel 11 !
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3