2011-09-11 10 views
11

मैं यह कहकर शुरू करूंगा कि मुझे पता है कि PHP कैसे इंटरफेस करता है और उन्हें "उपयोग" कैसे किया जाता है।PHP इंटरफ़ेस: वे अभ्यास में कैसे उपयोग योग्य हैं?

मेरा प्रश्न है; वास्तविक जीवन अनुप्रयोगों में वे कैसे उपयोगी हो जाते हैं?

मैं अब 3 से अधिक वर्षों से PHP लिख रहा हूं और कभी भी को इंटरफ़ेस के लिए की आवश्यकता महसूस नहीं हुई है। मैं किसी विशेष उद्देश्य के मुकाबले अच्छे अभ्यास के लिए इंटरफेस लिख रहा हूं।

+0

यह देखते हुए कि PHP में सख्त प्रकार की जांच नहीं है और इसके बजाय एक फॉर्म बतख टाइपिंग का उपयोग करता है, मैं सहमत हूं। मुझे लगता है कि इंटरफेस का उपयोग करने से आपके कोड को समझने में मदद मिलती है। –

+0

@Micheal Mior: PHP टाइप-हिंटिंग जानता है: 'फ़ंक्शन foo (BarClass $ x) {echo $ x-> हैलो; } ' – KingCrunch

+0

@ किंग कंचन यह करता है, लेकिन यह मूर्ख प्रमाण नहीं है। – GolezTrol

उत्तर

12

मैं एक उदाहरण प्रदान करूंगा जहां मैंने अपने वास्तविक दुनिया के अनुभव में इंटरफेस का उपयोग किया है।

इंटरफ़ेस बेहद उपयोगी हैं जब आपको प्लगइन आर्किटेक्चर की तरह कुछ परिभाषित करने की आवश्यकता होती है। मान लीजिए कि आपका एप्लिकेशन प्रमाणीकरण प्लगइन्स स्वीकार करता है, जिससे आपके अंतिम उपयोगकर्ता कार्यान्वयनकर्ता अपने आंतरिक लेख बुनियादी ढांचे (एलडीएपी, शिबबोलेथ, कुछ कस्टम ऑथ डेटाबेस, जो भी हो) के साथ एकीकृत हो सकते हैं। एक प्लगइन के लिए आदेश संगत होना करने के लिए, यह निम्न विधियों को लागू करना चाहिए:

validate_user() 
start_user_session() 
logout_user() 
get_user_details() 

तो एक अंतरफलक में परिभाषित किया गया, एक वर्ग तो सुनिश्चित करना है कि आवश्यक तरीकों प्लगइन वास्तुकला के साथ संगतता के लिए मौजूद हैं इंटरफ़ेस लागू करता है।

दुर्भाग्यवश, PHP रिटर्न प्रकार इंटरफ़ेस विधियों को लागू नहीं करता है, इसलिए आपको बस अपनी विधियों की अपेक्षित वापसी कार्यक्षमता को दस्तावेज करने के लिए सावधानी बरतनी चाहिए।

2

वे अभी तक उपयोगी नहीं हैं - अभी तक। उनका मुख्य उद्देश्य टाइप संकेत के लिए प्रतीत होता है। जब आप एक ही इंटरफ़ेस को लागू करने वाले दो अलग-अलग वर्ग लिखते हैं, तो आप फ़ंक्शन के लिए संकेत के प्रकार में उस इंटरफ़ेस का उपयोग कर सकते हैं। इस तरह, आप जानते हैं कि पैरामीटर में पारित ऑब्जेक्ट में उपलब्ध इंटरफ़ेस के सभी तरीके मिल गए हैं।

दुर्भाग्यवश, PHP वास्तव में जांच नहीं करता है कि क्या आप उस पैरामीटर पर कॉल किए गए किसी भी बुलाए गए तरीके या गुण वास्तव में उस इंटरफ़ेस में हैं, इसलिए आप गलती से एक ऑब्जेक्ट प्रॉपर्टी का उपयोग कर सकते हैं जो इंटरफ़ेस में उपलब्ध नहीं है, जिससे संभावित बग एक अलग प्रकार की वस्तु पारित की जाती है।

अन्य भाषाएं इस स्थिति में बहुत कठोर हैं और केवल आपको इंटरफ़ेस में घोषित की गई कार्यक्षमता का उपयोग करने की अनुमति देगी।

फिर भी, वे PHP में भी इस उद्देश्य के लिए सुविधाजनक हैं, और शायद ये चेक भविष्य के संस्करणों में कठोर हो जाएंगे, इसलिए यह कम त्रुटि प्रवण हो जाता है।

संबंधित मुद्दे