हमारी पिछली पोस्ट (लारवेल 11: हार्डकोडेड बाइंडिंग में भुगतान प्रोसेसिंग इंटरफेस कैसे जोड़ें और कार्यान्वित करें) में, हमने पेमेंटप्रोसेसरइंटरफेस के बीच बाइंडिंग को हार्डकोड करके भुगतान प्रोसेसर स्थापित करने के पहले चरण का पता लगाया। और एक विशिष्ट कार्यान्वयन, जैसे StripePaymentProcessor।
हालाँकि यह दृष्टिकोण छोटे अनुप्रयोगों के लिए सरल और प्रभावी है, लेकिन इसमें अधिक जटिल परिदृश्यों के लिए लचीलेपन का अभाव है जहाँ आपको कई भुगतान गेटवे को संभालने की आवश्यकता हो सकती है, लेकिन एक इंटरफ़ेस का उपयोग करके, हमें कोड को अलग करने की अनुमति दी गई ताकि हम इसे और बढ़ा सकें। खुले बंद सिद्धांत के अनुसार, उचित कार्यक्षमता को इंजेक्ट करने के लिए:
इस दूसरे भाग में, हम प्रासंगिक बाइंडिंग में उतरेंगे, लारवेल के सर्विस कंटेनर में एक और अधिक उन्नत तकनीक जो आपको विशिष्ट संदर्भ के आधार पर इंटरफ़ेस के विभिन्न कार्यान्वयन को इंजेक्ट करने की अनुमति देती है। यह तब उपयोगी होता है जब भुगतान प्रोसेसर का चुनाव एप्लिकेशन स्थिति पर निर्भर करता है, जैसे कि कौन सा नियंत्रक अनुरोध को संभाल रहा है।
लारवेल में प्रासंगिक बाइंडिंग सेवा कंटेनर को अनुरोध करने वाले वर्ग या संदर्भ के आधार पर इंटरफ़ेस के विभिन्न कार्यान्वयन को इंजेक्ट करने की अनुमति देता है। एकल, हार्डकोडेड कार्यान्वयन पर भरोसा करने के बजाय, हम नियंत्रक या किसी अन्य प्रासंगिक कारक के आधार पर विभिन्न भुगतान प्रोसेसर को हल करने के लिए प्रासंगिक बाइंडिंग का उपयोग कर सकते हैं।
आइए AppServiceProvider में प्रासंगिक बाइंडिंग को कॉन्फ़िगर करके शुरुआत करें। हम अनुरोध करने वाले नियंत्रक के आधार पर विभिन्न भुगतान प्रोसेसरों को बाइंड करेंगे। उदाहरण के लिए, StripePaymentController StripePaymentProcessor का उपयोग करेगा, और PayPalPaymentController PayPalPaymentProcessor का उपयोग करेगा।
यहां बताया गया है कि आप यह कैसे कर सकते हैं:
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); }
यहाँ क्या हो रहा है?
प्रासंगिक बाइंडिंग के साथ, प्रत्येक नियंत्रक अब अपने समर्पित भुगतान प्रोसेसर को स्वचालित रूप से इंजेक्ट कर सकता है। यहां बताया गया है कि आप अपने नियंत्रक कैसे सेट कर सकते हैं:
उदाहरण: स्ट्राइपपेमेंटकंट्रोलर
use App\Contracts\PaymentProcessorInterface; class StripePaymentController extends Controller { protected $paymentProcessor; public function __construct(PaymentProcessorInterface $paymentProcessor) { $this->paymentProcessor = $paymentProcessor; } // Methods to handle Stripe-specific payments... }
उदाहरण: 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... }
दोनों उदाहरणों में, लारवेल नियंत्रक संदर्भ के आधार पर स्वचालित रूप से सही भुगतान प्रोसेसर को इंजेक्ट करता है। यह AppServiceProvider में स्थापित प्रासंगिक बाइंडिंग के लिए धन्यवाद है।
प्रासंगिक बाइंडिंग विशेष रूप से तब उपयोगी होती है जब आप जानते हैं कि नियंत्रकों जैसे विशिष्ट वर्गों या संदर्भों के आधार पर इंटरफ़ेस के किस कार्यान्वयन का उपयोग करना है। यह आपके कोड को साफ और प्रबंधनीय बनाए रखने में मदद करता है, खासकर जब कई भुगतान गेटवे से निपटते समय, प्रत्येक का अपना नियंत्रक होता है।
इस पोस्ट में, हमने यह पता लगाया है कि भुगतान प्रसंस्करण के लिए लारवेल 11 में प्रासंगिक बाइंडिंग को कैसे लागू किया जाए। यहां इस दृष्टिकोण के लाभों का एक त्वरित सारांश दिया गया है:
अगली पोस्ट में, हम फ़ैक्टरी पैटर्न का पता लगाएंगे, जो रनटाइम पर भुगतान प्रोसेसर के गतिशील चयन की अनुमति देता है, जटिल अनुप्रयोगों के लिए और भी अधिक लचीलापन प्रदान करता है।
अगले भाग के लिए बने रहें, जहां हम बताएंगे कि लारवेल 11 में भुगतान प्रसंस्करण के लिए कारखानों का उपयोग कैसे करें!
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3