PHP में, इंस्टेंस मेथड्स स्टेटिक मेथड्स पर पसंदीदा अभ्यास हैं। किसी भी मामले में, यह नहीं कहना है कि स्टेटिक मेथड्स उपयोगी नहीं हैं, उनका एक विशिष्ट और अद्वितीय उद्देश्य है। यहां हम PHP में स्टेटिक और इंस्टेंस मेथड्स के बीच तुलना पर चर्चा करते हैं।
यहां ध्यान दें कि इंस्टेंस मेथड हमेशा क्लास के ऑब्जेक्ट से जुड़ा होता है जबकि दूसरी ओर स्टेटिक मेथड्स हमेशा क्लास से जुड़े होते हैं।
पहले स्टेटिक मेथड के बारे में बात करते हैं। PHP में स्टेटिक मेथड अन्य ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषाओं के समान है। PHP में स्टेटिक मेथड का उपयोग करने के महत्वपूर्ण मामले। स्टेटिक मेथड का उपयोग केवल तब किया जाना चाहिए जब विशिष्ट जानकारी पूरी क्लास के लिए स्थिर रहती है। अनिवार्य रूप से, स्टेटिक मेथड का उपयोग तब किया जाता है जब उस मेथड को उस क्लास के ऑब्जेक्ट की मदद के बिना एक्सेस करना हो।
उदाहरण
<?php
class Car{
static function getColor(){
return "blue";
}
}
echo (Car::getColor());
?>
आउटपुट:
blue
व्याख्या:
उदाहरण के लिए, उपरोक्त प्रोग्राम में कुछ प्रोग्रामर कार के बारे में जानकारी बना रहा है और उसमें आपके पास एक Car क्लास है और एक फंक्शन getColor() है जो कार का रंग परिभाषित करता है, इसलिए प्रत्येक ऑब्जेक्ट को getColor() फंक्शन की आवश्यकता होती है जो क्लास Car के सभी ऑब्जेक्ट्स के लिए समान रंग लौटाता है, इसलिए इस मामले में हम getColor() मेथड को स्टेटिक बना सकते हैं।
आइए इंस्टेंस मेथड पर चर्चा करें। इंस्टेंस मेथड का उपयोग तब किया जाता है जब ऑब्जेक्ट बनाए बिना मेथड को कॉल करने का कोई तरीका नहीं होता। साथ ही हर बार जब मेथड को क्लास की प्रॉपर्टीज के साथ इंटरैक्ट करने की आवश्यकता होती है तो हमें इंस्टेंस मेथड की आवश्यकता होती है।
उदाहरण
आइए उपरोक्त मामले को एक उदाहरण के साथ प्रदर्शित करें:
<?php
class Employee{
private $empname;
function setEmpname($empname) {
$this->empname = $empname;
}
function getEmpname() {
return $this -> empname;
}
}
$obj = new Employee;
$obj -> setEmpname("Alex");
echo $obj -> getName();
?>
आउटपुट:
Alex
व्याख्या:
एक Employee क्लास पर विचार करें जिसमें setEmpname() एम्प्लॉय नाम पढ़ता है और getEmpname() मेथड जो एम्प्लॉय का नाम लौटाता है। इस मामले में, प्रत्येक एम्प्लॉय का नाम एक-दूसरे से अलग होता है इसलिए हम getEmpname() या setEmploye() मेथड को स्टेटिक घोषित नहीं कर सकते क्योंकि हर बार ये मेथड्स वेरिएबल "$empname" के साथ इंटरैक्ट करते हैं।