मुखौटा डिजाइन पैटर्न एक संरचनात्मक पैटर्न है जो कक्षाओं, पुस्तकालयों या उपप्रणालियों के एक जटिल सेट के लिए एक सरलीकृत इंटरफ़ेस प्रदान करता है। इसका उपयोग सिस्टम की जटिलता को छिपाने और ग्राहकों के लिए अधिक उपयोगकर्ता-अनुकूल और उपयोग में आसान इंटरफ़ेस प्रदान करने के लिए किया जाता है।
मुख्य लक्ष्य
-
इंटरैक्शन को सरल बनाएं: एकल, सरल इंटरफ़ेस बनाकर, फ़ेसेड पैटर्न किसी जटिल सिस्टम की सभी आंतरिक जटिलताओं को उजागर किए बिना उसका उपयोग करना आसान बनाता है।
-
सबसिस्टम का एनकैप्सुलेशन: सबसिस्टम बनाने वाली कक्षाएं जटिल हो सकती हैं, लेकिन मुखौटा एक अमूर्त परत के रूप में कार्य करता है, जो क्लाइंट को केवल सरल और सामंजस्यपूर्ण तरीकों से बातचीत करने की अनुमति देता है।
-
डिकूपलिंग: पैटर्न क्लाइंट को आंतरिक कार्यान्वयन से अलग रखने में मदद करता है, जिससे भविष्य में सिस्टम को बनाए रखना और विस्तार करना आसान हो जाता है।
PHPMailer और फेकाडे पैटर्न का उपयोग करने का उदाहरण
परिस्थिति:
कल्पना करें कि हमारे पास एक एप्लिकेशन है जिसे सरल तरीके से ईमेल भेजने की आवश्यकता है। ईमेल भेजने की प्रक्रिया में प्रमाणीकरण सेटिंग्स, एसएमटीपी सर्वर, प्रेषक, प्राप्तकर्ता, ईमेल बॉडी, अनुलग्नक इत्यादि सेट करना शामिल हो सकता है। इस पूरी जटिल प्रक्रिया को अंतिम उपयोगकर्ता को उजागर करने के बजाय, हम इन परिचालनों को समाहित करने के लिए एक मुखौटा बना सकते हैं। &&&]
संगीतकार के माध्यम से PHPMailer स्थापित करें
संगीतकार को phpmailer/phpmailer की आवश्यकता है
composer require phpmailer/phpmailer
निर्देशिका प्रणाली
?मुखौटा
┣ ?src
┃ ┗ ?MailFacade.php
┣ ?विक्रेता
┣ ?संगीतकार.json
┗ ?index.php
composer require phpmailer/phpmailer
ऑटोलोड
सबसे पहले, आइए सुनिश्चित करें कि
संगीतकार निर्भरताओं का प्रबंधन करता है और कक्षाओं को सही ढंग से ऑटोलोड करता है।
कंपोजर.जेसन फ़ाइल में, हम src फ़ोल्डर से कक्षाओं के ऑटोलोड को शामिल कर सकते हैं और PHPMailer निर्भरता भी जोड़ सकते हैं:
{
"ज़रूरत होना": {
"phpmailer/phpmailer": "^6.0"
},
"ऑटोलोड": {
"पीएसआर-4": {
"ऐप\\": "src/"
}
}
}
composer require phpmailer/phpmailer
क्लास मेलफ़ेकेड
अब एक MailFacade क्लास बनाएं जो उपयोगकर्ता के लिए ईमेल भेजने की प्रक्रिया को सरल बनाने के लिए मुखौटे के रूप में कार्य करेगा।
नेमस्पेस ऐप;
PHPMailer\PHPMailer\PHPMiler का उपयोग करें;
PHPMailer\PHPMailer\Exception का उपयोग करें;
// मुखौटा वर्ग
क्लास मेलफ़ेकेड {
निजी $मेल;
सार्वजनिक फ़ंक्शन __निर्माण() {
$यह->मेल = नया PHPMailer(सही); // PHPMailer का एक नया उदाहरण बनाएं
$यह->मेल->isSMTP(); // एसएमटीपी का उपयोग करने के लिए सेट अप करें
$यह->मेल->होस्ट = 'smtp.example.com'; // एसएमटीपी सर्वर सेट करें
$यह->मेल->SMTPAuth = सत्य; // एसएमटीपी प्रमाणीकरण सक्षम करें
$यह->मेल->उपयोगकर्ता नाम = '
[email protected]'; // एसएमटीपी उपयोगकर्ता नाम
$यह->मेल->पासवर्ड = 'गुप्त'; // एसएमटीपी पासवर्ड
$यह->मेल->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // टीएलएस एन्क्रिप्शन सक्षम करें
$यह->मेल->पोर्ट = 587; // एसएमटीपी सर्वर पोर्ट
}
}
composer require phpmailer/phpmailer
ईमेल भेजने की विधि
// एक साधारण ईमेल भेजने की विधि
सार्वजनिक फ़ंक्शन सेंडईमेल($से, $विषय, $बॉडी) {
कोशिश {
// प्रेषक सेट करें
$this->mail->setFrom('
[email protected]', 'प्रेषक का नाम');
// प्राप्तकर्ता सेट करें
$यह->मेल->पता जोड़ें($से); // आप $this->mail->addAddress('
[email protected]') के साथ और अधिक जोड़ सकते हैं;
// ईमेल का विषय और मुख्य भाग सेट करें
$यह->मेल->विषय = $विषय;
$यह->मेल->बॉडी = $बॉडी;
$this->mail->isHTML(true); // HTML को स्वीकार करने के लिए ईमेल का मुख्य भाग सेट करें
// ईमेल भेजें
$यह->मेल->भेजें();
इको 'ईमेल सफलतापूर्वक भेजा गया!';
} पकड़ें (अपवाद $ई) {
इको "ईमेल भेजने में त्रुटि: {$this->mail->ErrorInfo}";
}
}
composer require phpmailer/phpmailer
अटैचमेंट के साथ ईमेल भेजने की विधि
// अनुलग्नक के साथ ईमेल भेजने की विधि
सार्वजनिक फ़ंक्शन भेजेंईमेलविथअटैचमेंट($से, $विषय, $बॉडी, $अटैचमेंटपाथ) {
कोशिश {
// पिछली पद्धति के समान ही बुनियादी विन्यास
$this->mail->setFrom('
[email protected]', 'प्रेषक का नाम');
$यह->मेल->पता जोड़ें($से);
// विषय और मुख्य भाग सेट करें
$यह->मेल->विषय = $विषय;
$यह->मेल->बॉडी = $बॉडी;
$this->mail->isHTML(true);
// अनुलग्नक जोड़ें
$यह->मेल->ऐडअटैचमेंट($अटैचमेंटपाथ);
// ईमेल भेजें
$यह->मेल->भेजें();
इको 'अटैचमेंट वाला ईमेल सफलतापूर्वक भेजा गया!';
} पकड़ें (अपवाद $ई) {
इको "ईमेल भेजने में त्रुटि: {$this->mail->ErrorInfo}";
}
}
composer require phpmailer/phpmailer
परीक्षा
'vendor/autoload.php' की आवश्यकता है;
App\MailFacade का उपयोग करें;
// मुखौटा का उपयोग करना
$mailFacade = नया MailFacade();
// एक साधारण ईमेल भेजना
$mailFacade->sendEmail('
[email protected]', 'ईमेल विषय', 'ईमेल का मुख्य भाग HTML में');
// अनुलग्नक के साथ एक ईमेल भेजना
$mailFacade->sendEmailWithAttachment('
[email protected]', 'अटैचमेंट वाला विषय', 'यहां आपका अटैचमेंट है', '/path/to/attachment.pdf');
composer require phpmailer/phpmailer
यह काम किस प्रकार करता है:
मेलफ़ेकेड: यह वर्ग ईमेल को कॉन्फ़िगर करने और भेजने के लिए आवश्यक सभी तर्कों को समाहित करता है, जिससे मुखौटा के उपयोगकर्ता को ईमेल भेजने के लिए बस एक विधि कॉल करने की अनुमति मिलती है।-
PHPMailer: PHPMailer की जटिलता (जैसे SMTP कॉन्फ़िगरेशन, प्रमाणीकरण, आदि) मुखौटा के भीतर छिपी हुई है।-
फ़ायदे:
सरलता: क्लाइंट कोड (जो MailFacade का उपयोग करता है) को सर्वर कॉन्फ़िगरेशन, PHPMailer विधियों आदि जैसे विवरण जानने की आवश्यकता नहीं है।-
पुन: प्रयोज्य: कोड या तर्क को दोहराने की आवश्यकता के बिना मुखौटा का उपयोग एप्लिकेशन के विभिन्न हिस्सों में किया जा सकता है।-
रखरखाव योग्य: यदि कार्यान्वयन में कुछ बदलने की आवश्यकता है (उदाहरण के लिए, एसएमटीपी सर्वर को स्विच करना), तो आपको इसे केवल मेलफैकेड क्लास के भीतर अपडेट करना होगा।-
यह एक व्यावहारिक उदाहरण है कि कैसे फेकाडे पैटर्न PHPMailer जैसे जटिल पुस्तकालयों के साथ बातचीत को सरल बना सकता है।