"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > PHP डिज़ाइन पैटर्न: एडाप्टर

PHP डिज़ाइन पैटर्न: एडाप्टर

2024-11-06 को प्रकाशित
ब्राउज़ करें:454

एडेप्टर डिज़ाइन पैटर्न एक संरचनात्मक पैटर्न है जो असंगत इंटरफेस वाली वस्तुओं को एक साथ काम करने की अनुमति देता है। यह दो वस्तुओं के बीच एक मध्यस्थ (या एडाप्टर) के रूप में कार्य करता है, एक वस्तु के इंटरफ़ेस को दूसरे द्वारा अपेक्षित इंटरफ़ेस में परिवर्तित करता है। यह उन कक्षाओं को अनुमति देता है जो अन्यथा असंगत होतीं क्योंकि उनके पास अपने मूल कोड में संशोधन किए बिना सहयोग करने के लिए अलग-अलग इंटरफ़ेस होते हैं।

एडेप्टर संरचना

एडेप्टर पैटर्न आम तौर पर तीन मुख्य तत्वों से बना होता है:

  • क्लाइंट: वह वर्ग जो एक विशिष्ट इंटरफ़ेस की वस्तुओं के साथ काम करने की अपेक्षा करता है।
  • एडाप्टी: वह वर्ग जिसमें एक इंटरफ़ेस है जो क्लाइंट के साथ असंगत है, लेकिन जिसकी कार्यक्षमता आवश्यक है।
  • एडाप्टर: वह वर्ग जो क्लाइंट द्वारा अपेक्षित इंटरफ़ेस को कार्यान्वित करता है और कॉल को एडेप्टी इंटरफ़ेस में परिवर्तित करता है।

PHP Design Pattern: Adapter

एडेप्टर के प्रकार

  1. ऑब्जेक्ट एडाप्टर: रचना-आधारित। एडॉप्टर में उस वर्ग का एक उदाहरण होता है जिसे वह अनुकूलित कर रहा है।
  2. क्लास एडाप्टर: वंशानुक्रम-आधारित (आमतौर पर उन भाषाओं में जो एकाधिक वंशानुक्रम का समर्थन करते हैं)।

एडेप्टर का उपयोग कब करें?

  • जब आप किसी मौजूदा क्लास का उपयोग करना चाहते हैं, लेकिन इसका इंटरफ़ेस क्लाइंट की अपेक्षा से मेल नहीं खाता है।
  • पुराने कोड को संशोधित किए बिना, नई कार्यक्षमता को एक विरासत प्रणाली में एकीकृत करने के लिए।

यह पैटर्न उन प्रणालियों में उपयोगी है जिन्हें बाहरी पुस्तकालयों या एपीआई के साथ काम करने की आवश्यकता होती है, जिससे आप इन पुस्तकालयों के कोड को बदले बिना उनकी कार्यक्षमता को अनुकूलित कर सकते हैं।

उदाहरण PHPMailer का उपयोग करना

यहां कस्टम इंटरफ़ेस के साथ PHPMailer को एकीकृत करने के लिए एडाप्टर डिज़ाइन पैटर्न का उपयोग करने का एक उदाहरण दिया गया है।

परिस्थिति:

आइए मान लें कि आपका सिस्टम किसी भी ईमेल भेजने वाले वर्ग से IMailer नामक इंटरफ़ेस लागू करने की अपेक्षा करता है, लेकिन PHPMAILer सीधे इस इंटरफ़ेस का अनुसरण नहीं करता है। एडाप्टर का उपयोग सिस्टम द्वारा अपेक्षित इंटरफ़ेस के लिए PHPMailer को अनुकूलित करने के लिए किया जाएगा।

संगीतकार के माध्यम से PHPMailer स्थापित करें

composer require phpmailer/phpmailer

निर्देशिका प्रणाली

?Adapter
 ┣ ?src
 ┃ ┣ ?Interfaces
 ┃ ┃ ┗ ?IMailer.php
 ┃ ┣ ?Adapters
 ┃ ┃ ┗ ?PHPMailerAdapter.php
 ┃ ┗ ?Services
 ┃   ┗ ?ServicoDeEmail.php
 ┣ ?vendor
 ┣ ?composer.json
 ┗ ?index.php

ऑटोलोड

composer.json फ़ाइल में (प्रोजेक्ट के मूल में स्थित), कक्षाओं को स्वचालित रूप से लोड करने के लिए ऐप नेमस्पेस जोड़ें:

{
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    },
    "require": {
        "phpmailer/phpmailer": "^6.5"
    }
}

इंटरफ़ेस आईमेलर

namespace App\Interfaces;

interface IMailer {
    public function send($to, $subject, $message);
}

क्लास PHPMailerAdapter

namespace App\Adapters;

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use App\Interfaces\IMailer;

class PHPMailerAdapter implements IMailer {
    private $phpMailer;

    public function __construct() {
        $this->phpMailer = new PHPMailer(true);

        // Basic PHPMailer configuration
        $this->phpMailer->isSMTP();
        $this->phpMailer->Host = 'smtp.example.com';
        $this->phpMailer->SMTPAuth = true;
        $this->phpMailer->Username = '[email protected]';
        $this->phpMailer->Password = 'password';
        $this->phpMailer->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
        $this->phpMailer->Port = 587;
        $this->phpMailer->setFrom('[email protected]', 'Your Name');
    }
}
  • भेजने की विधि
public function send($to, $subject, $message) {
    try {
        $this->phpMailer->addAddress($to);
        $this->phpMailer->Subject = $subject;
        $this->phpMailer->Body = $message;
        $this->phpMailer->send();
        echo 'Email sent successfully!';
    } catch (Exception $e) {
        echo "Failed to send email: {$this->phpMailer->ErrorInfo}";
    }
}

क्लास ईमेलसेवा

namespace App\Services;

use App\Interfaces\IMailer;

class EmailService {
    private $mailer;

    public function __construct(IMailer $mailer) {
        $this->mailer = $mailer;
    }
}
  • EmailToClient भेजने की विधि
public function sendEmailToClient($to, $subject, $message) {
    $this->mailer->send($to, $subject, $message);
}

फ़ाइल Index.php

require 'vendor/autoload.php';

use App\Adapters\PHPMailerAdapter;
use App\Services\EmailService;

// Creating the PHPMailer Adapter
$mailer = new PHPMailerAdapter();

// Using the email service with the IMailer interface
$emailService = new EmailService($mailer);

// Sending an email
$emailService->sendEmailToClient('[email protected]', 'Email Subject', 'Message content.');

संरचना का स्पष्टीकरण

  • IMailer.php: IMailer इंटरफ़ेस को परिभाषित करता है जिसे किसी भी ईमेल सिस्टम को लागू करना चाहिए।
  • PHPMailerAdapter.php: PHPMailer को IMailer इंटरफ़ेस में अनुकूलित करता है।
  • emailService.php: ईमेल सेवा जो ईमेल भेजने के लिए IMailer इंटरफ़ेस का उपयोग करती है।
  • Index.php: मुख्य फ़ाइल जो संदेश भेजने के लिए ईमेल सेवा का उपयोग करती है।
विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/xxzeroxx/php-design-pattern-adapter-3hi1?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3