इस लेख में, हम PHP इंटरफेस का उपयोग करना सीखेंगे जो PHP ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में सबसे महत्वपूर्ण संरचनात्मक पैटर्न में से एक है।
एक इंटरफेस हमें प्रोग्राम बनाने में सक्षम बनाता है, उन पब्लिक मेथड्स को निर्दिष्ट करता है जिन्हें एक क्लास को इम्प्लीमेंट करना होगा, बिना उन विशिष्ट मेथड्स की जटिलताओं और प्रक्रिया को शामिल किए कि वे कैसे इम्प्लीमेंटेड हैं। इसका तात्पर्य है कि एक इंटरफेस मेथड नाम और आर्गुमेंट्स को परिभाषित कर सकता है, लेकिन मेथड्स की सामग्री को नहीं। इंटरफेस इम्प्लीमेंट करने वाली किसी भी क्लास को इंटरफेस द्वारा परिभाषित सभी मेथड्स को इम्प्लीमेंट करना होगा।
इंटरफेस को क्लास के समान ही परिभाषित किया जाता है, हालांकि, डिक्लेरेशन में क्लास वाक्यांश को केवल इंटरफेस कीवर्ड से बदल दिया जाता है और किसी भी मेथड की सामग्री परिभाषित नहीं होती है।
उदाहरण
आइए एक सरल उदाहरण के साथ एक इंटरफेस बनाएं और इसे इम्प्लीमेंट करें।
<?php
Interface MyInterface {
public function getName();
public function getAge();
}
class MyClass implements MyFirstInterface{
public function getName() {
echo "My name A".'
';
}
public function getAge(){
echo "My Age 12";
}
}
$obj = new MyClass;
$obj->getName();
$obj->getAge();
?>
आउटपुट:
My name A My Age 12
व्याख्या:
यहां हमने दो मेथड्स getName और getAge के साथ बिना किसी सामग्री के MyFirstInterface नामक एक इंटरफेस घोषित किया है। फिर क्लास MyClass इस इंटरफेस को इम्प्लीमेंट करती है और आवश्यकता के अनुसार उपलब्ध मेथड्स का उपयोग करती है।
आइए इंटरफेस की कुछ महत्वपूर्ण विशेषताएं सीखें:
- एक इंटरफेस में ऐसे मेथड्स होते हैं जिनकी कोई सामग्री नहीं होती, जिसका अर्थ है कि इंटरफेस मेथड्स एब्स्ट्रैक्ट मेथड्स होते हैं।
- इंटरफेस में सभी मेथड्स का पब्लिक विजिबिलिटी स्कोप होना चाहिए।
- इंटरफेस क्लास से काफी अलग हैं क्योंकि क्लास एक क्लास से इनहेरिट कर सकती है लेकिन क्लास एक या अधिक इंटरफेस इम्प्लीमेंट कर सकती है।
- इंटरफेस के अंदर कोई वेरिएबल्स नहीं हो सकते।
नोट:
हम इंटरफेस का उपयोग करके मल्टीपल इनहेरिटेंस प्राप्त कर सकते हैं क्योंकि एक क्लास एक से अधिक इंटरफेस इम्प्लीमेंट कर सकती है जबकि यह केवल एक क्लास को एक्सटेंड कर सकती है।
उदाहरण
आइए एक सरल उदाहरण से इसका परीक्षण करें।
<?php
interface a{
public function printData();
}
interface b{
public function getData();
}
interface c extends a, b{
public function addData();
}
class d implements c{
public function printData(){
echo "I am printing";
}
public function getData(){
echo "I am reading data";
}
public function addData(){
echo "I am adding"
}
}
$myobj = new class d();
$myobj->printData();
$myobj->addData();
?>
आउटपुट:
I am printing I am adding
व्याख्या:
यहां हमने तीन इंटरफेस घोषित किए हैं यानी 'interface a', 'interface b', 'interface c'। इस मामले में इंटरफेस c पिछले दो इंटरफेस को भी एक्सटेंड करता है। फिर हमने एक क्लास घोषित की जो केवल इंटरफेस c को इम्प्लीमेंट करती है, लेकिन चूंकि इंटरफेस c पिछले दो इंटरफेस को एक्सटेंड करता है, 'interface a', 'interface b' और 'interface c' में घोषित सभी मेथड्स क्लास d में उपयोग के लिए उपलब्ध हैं। इस तरह हम इंटरफेस इम्प्लीमेंट करके मल्टीपल इनहेरिटेंस प्राप्त कर सकते हैं।