आपका दिन शुभ हो!
यह पोस्ट उन शुरुआती लोगों के लिए है जो OOP को php में समझना शुरू करते हैं और इस शैली के अनुसार कार्य करने का प्रयास करते हैं।
यह SoapClient () वर्ग का विस्तार करने के बारे में है। यह क्या है और इसके साथ क्या खाया जाता है, स्थापना के साथ मिलकर
इस पोस्ट में वर्णित है।
विशेष रूप से, मैंने खुद से साबुन के साथ काम करने का सवाल पूछा, जब काम पर मुझे यह काम मिला कि हमारे एप्लिकेशन ग्राहक के सर्वर के साथ कैसे इंटरैक्ट करते हैं। क्योंकि चूंकि हमारे अनुप्रयोगों में अधिकांश तर्क प्रक्रियात्मक शैली में लिखे गए हैं, इसलिए मैं मूल रूप से साबुन के साथ काम को कई कार्यों में धकेलने वाला था। लेकिन जब मुझे एहसास हुआ कि यह कम से कम - बदसूरत, बहुत भारी, और असुविधाजनक है, तो मैंने सोपक्लास क्लास का विस्तार करने का फैसला किया।
तो चलिए शुरू करते हैं।
कार्य मेरे लिए निर्धारित किया गया था - विभिन्न डेटा प्राप्त करने के लिए एप्लिकेशन और ग्राहक के सर्वर के बीच बातचीत की प्रणाली के तर्क को विकसित करने के लिए। मैं सभी तरीके नहीं दूंगा, मैं एक बात का एक उदाहरण पर विचार करूंगा: कंपनी का नाम और क्षेत्र कोड द्वारा प्रबंधक का नाम प्राप्त करें।
Google में बहुत अधिक जानकारी नहीं थी, लेकिन शुद्ध तर्क का पालन करते हुए, मुझे ऐसी कक्षा मिली:
class SoapCrmClient extends SoapClient { function getPersonaByCompany($companyName, $regionCode) { $dataSoap = $this->FindByCompany(array("CompanyName"=>$companyName, "RegionCode"=>$regionCode)); return $dataSoap->FindByCompanyResult; } }
हमने wsdl मोड में साबुन के साथ काम किया है, और मैं कक्षा के उदाहरण नहीं बनाना चाहता, हमेशा एक wsdl फ़ाइल का पथ बताता हूं, इसलिए __construct () फ़ंक्शन जोड़ा गया था:
function __construct() { $this->SoapClient("data/Service1.wsdl"); }
इसके अलावा, मैं जिन अनुप्रयोगों के साथ काम करता हूं वे cp1251 कुछ कारकों के कारण एन्कोडेड हैं, जबकि SOAP utf-8 के साथ काम करता है। प्रारंभ में - मैंने mb_convert_encoding का उपयोग करके एक बोझिल निर्माण लिखा, लेकिन, SoapClient वर्ग के दस्तावेज का जिक्र करते हुए, मैंने निम्नलिखित देखा:
सोपक्लिंट स्वीकार करने वाले मापदंडों में एन्कोडिंग पैरामीटर है, जिसमें से एन्कोडिंग (इनपुट पर) और जिसमें (आउटपुट पर) यह सोप डेटा को परिवर्तित करता है। हम इसे इस तरह उपयोग करते हैं:
function __construct() { $this->SoapClient("data/Service1.wsdl", array('encoding'=>'CP1251')); }
अब हम सब कुछ एकजुट करते हैं:
class SoapCrmClient extends SoapClient { function __construct() { $this->SoapClient("data/Service1.wsdl", array('encoding'=>'CP1251')); } function getPersonaByCompany($companyName, $regionCode) { $dataSoap = $this->FindByCompany(array("CompanyName"=>$companyName, "RegionCode"=>$regionCode)); return $dataSoap->FindByCompanyResult; } }
हम इस तरह काम करते हैं:
try { $client = new SoapCrmClient(); $persona = $client->getPersonaByCompany('', 1); } catch (SoapFault $e) {