मेथड ओवरलोडिंग ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग की एक अवधारणा है जो समग्र एप्लिकेशन को आसान तरीके से बनाने में मदद करती है। फ़ंक्शन ओवरलोडिंग या मेथड ओवरलोडिंग एक ऐसी सुविधा है जो एक समान नाम के साथ कई विधियों को बनाने की अनुमति देती है जो इनपुट पैरामीटर के प्रकार में एक दूसरे से अलग तरीके से काम करती है जिसे वह तर्क के रूप में स्वीकार करता है।
उपरोक्त अवधारणा अन्य प्रोग्रामिंग भाषाओं के लिए ठीक है और इसे स्टेटिक पॉलीमॉर्फिक यानी मेथड ओवरलोडिंग कहा जाता है।
उदाहरण
आइए एक उदाहरण के माध्यम से समझते हैं।
<?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() को कॉल किया जाता है।
उदाहरण
आइए एक उदाहरण से मेथड ओवरलोडिंग को समझते हैं।
<?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
स्पष्टीकरण:
यहां क्षेत्र () विधि को गतिशील रूप से बनाया गया है और जादू विधि __call() की मदद से निष्पादित किया गया है और ऑब्जेक्ट के रूप में पैरामीटर्स के पास के अनुसार इसका व्यवहार बदल जाता है।