मेथड ओवरलोडिंग ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग की एक अवधारणा है जो कम्पोजिट एप्लिकेशन को आसान तरीके से बनाने में मदद करती है। फंक्शन ओवरलोडिंग या मेथड ओवरलोडिंग एक विशेषता है जो समान नाम वाले कई मेथड्स बनाने की अनुमति देती है जो उनके द्वारा स्वीकार किए जाने वाले इनपुट पैरामीटर्स के प्रकार के आधार पर एक-दूसरे से अलग तरीके से काम करते हैं।
उपरोक्त अवधारणा अन्य प्रोग्रामिंग भाषाओं के लिए ठीक है और इसे स्टेटिक पॉलीमॉर्फिक यानी मेथड ओवरलोडिंग कहा जाता है।
उदाहरण
आइए एक उदाहरण के माध्यम से समझें।
<?php
class machine {
function doTask($var1){
return $var1;
}
function doTask($var1,$var2){
return $var1 * $var1 ;
}
}
$task1 = new machine();
$task1->doTask(5,10);
?>
आउटपुट:
Error
व्याख्या:
यह एक एरर उत्पन्न करेगा क्योंकि PHP कहेगा कि आपने इस मेथड को दो बार घोषित किया है।
लेकिन अन्य प्रोग्रामिंग भाषाएं कहती हैं, doTask($var1) और doTask($var1,$var2) ओवरलोडेड मेथड्स हैं। बाद वाले को कॉल करने के लिए, दो पैरामीटर्स पास किए जाने चाहिए, जबकि पूर्व के लिए केवल एक पैरामीटर की आवश्यकता होती है।
तो यह व्यवहार यानी कोडिंग समय पर फंक्शन को कॉल करने का निर्णय स्टेटिक पॉलीमॉर्फिक यानी मेथड ओवरलोडिंग के रूप में जाना जाता है।
आइए चर्चा करें कि PHP5 से संबंधित मेथड ओवरलोडिंग कैसे प्राप्त करें। PHP के मामले में, हमें PHP के मैजिक मेथड्स __call() का उपयोग करके मेथड ओवरलोडिंग प्राप्त करना होगा।
PHP में ओवरलोडिंग का अर्थ है मेथड का व्यवहार इनपुट पैरामीटर के अनुसार डायनामिक रूप से बदलता है। इस ट्यूटोरियल में, हम उन धारणाओं को समझेंगे। आइए __call() मेथड पर चर्चा करें।
__call():
यदि कोई क्लास __call() को एक्ज़ीक्यूट करती है, तो यदि उस क्लास के ऑब्जेक्ट को एक ऐसे मेथड के साथ कॉल किया जाता है जो मौजूद नहीं है तो उस मेथड के बजाय __call() को कॉल किया जाता है।
उदाहरण
आइए एक उदाहरण के साथ मेथड ओवरलोडिंग को समझें।
<?php
class Shape {
const PI = 3.142 ;
function __call($name,$arg){
if($name == 'area')
switch(count($arg)){
case 0 : return 0 ;
case 1 : return self::PI * $arg[0] ;
case 2 : return $arg[0] * $arg[1];
}
}
}
$circle = new Shape();
echo $circle->area(3);
$rect = new Shape();
echo $rect->area(8,6);
?>
आउटपुट:
9.426 48
व्याख्या:
यहां area() मेथड डायनामिक रूप से बनाया गया है और मैजिक मेथड __call() की मदद से निष्पादित किया गया है और इसका व्यवहार ऑब्जेक्ट के रूप में पैरामीटर्स के पास के अनुसार बदलता है।