Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> PHP

PHP में फ़ंक्शन ओवरलोडिंग और ओवरराइडिंग


PHP में फ़ंक्शन ओवरलोडिंग

फ़ंक्शन ओवरलोडिंग एक ऐसी सुविधा है जो समान नाम वाले कई मेथड्स बनाने की अनुमति देती है जो उनके द्वारा स्वीकार किए गए इनपुट पैरामीटर्स के प्रकार के आधार पर अलग-अलग काम करते हैं।

महत्वपूर्ण: PHP पारंपरिक कंपाइल-टाइम फ़ंक्शन ओवरलोडिंग (C++/Java जैसा) **समर्थन नहीं करता**। इसके बजाय, PHP मैजिक मेथड __call() और __callStatic() का उपयोग करके "ओवरलोडिंग" का अनुकरण करता है।

उदाहरण: __call() के साथ ओवरलोडिंग अनुकरण

<?php
class Shape {
    const PI = 3.142;

    // मैजिक मेथड: अपरिभाषित/अदृश्य मेथड्स कॉल को इंटरसेप्ट करता है
    public function __call($name, $args) {
        if ($name === 'area') {
            switch (count($args)) {
                case 0: return 0;
                case 1: return self::PI * $args[0];           // वृत्त: πr
                case 2: return $args[0] * $args[1];           // आयत: l×w
            }
        }
        throw new BadMethodCallException("मेथड $name मौजूद नहीं");
    }
}

$circle = new Shape();
echo $circle->area(3) . "\n";      // 9.426

$rect = new Shape();
echo $rect->area(8, 6) . "\n";     // 48
?>

आउटपुट

9.426
48

PHP में फ़ंक्शन ओवरराइडिंग

फ़ंक्शन ओवरराइडिंग में, पैरेंट और चाइल्ड क्लासेस का **समान फ़ंक्शन नाम और समान संख्या में आर्गुमेंट्स** होते हैं। चाइल्ड क्लास पैरेंट के मेथड का अपना कार्यान्वयन प्रदान करती है।

उदाहरण

<?php
class Base {
    public function display() {
        echo "\nबेस क्लास फ़ंक्शन फाइनल घोषित!";
    }
    public function demo() {
        echo "\nबेस क्लास फ़ंक्शन!";
    }
}

class Derived extends Base {
    public function demo() {
        echo "\nडेराइव्ड क्लास फ़ंक्शन!";
    }
}

$ob = new Base();
$ob->demo();      // बेस क्लास फ़ंक्शन!
$ob->display();   // बेस क्लास फ़ंक्शन फाइनल घोषित!

$ob2 = new Derived();
$ob2->demo();     // डेराइव्ड क्लास फ़ंक्शन! (ओवरराइड किया गया)
$ob2->display();  // बेस क्लास फ़ंक्शन फाइनल घोषित! (विरासत में मिला)
?>

आउटपुट

बेस क्लास फ़ंक्शन!
बेस क्लास फ़ंक्शन फाइनल घोषित!
डेराइव्ड क्लास फ़ंक्शन!
बेस क्लास फ़ंक्शन फाइनल घोषित!

मुख्य अंतर

  1. - PHP में get_class_methods() फंक्शन

    PHP में get_class_methods() फंक्शन क्लास मेथड्स के नाम प्राप्त करता है। यह name_of_class द्वारा निर्दिष्ट क्लास के लिए परिभाषित मेथड नामों की सरणी लौटाता है। त्रुटि की स्थिति में NULL लौटाता है। सिंटैक्स get_class_methods(class) पैरामीटर्स name_of_class - क्लास नाम। आवश्यक! रिटर्न वैल्यू name_o

  1. - PHP में is_subclass_of() फंक्शन

    PHP में is_subclass_of() फंक्शन जांचता है कि ऑब्जेक्ट के माता-पिता में यह क्लास है या नहीं। सिंटैक्स is_subclass_of(object, class, string) पैरामीटर्स object - परीक्षण किया जाने वाला ऑब्जेक्ट। class - क्लास का नाम। string - यदि false पर सेट है, तो ऑब्जेक्ट के रूप में स्ट्रिंग क्लास नाम अनुमति नहीं

  1. - PHP में class_exists() फंक्शन

    PHP में class_exists() फंक्शन जांचता है कि क्लास परिभाषित की गई है या नहीं। यदि क्लास एक परिभाषित क्लास है तो TRUE लौटाता है, अन्यथा FALSE। सिंटैक्स class_exists(class, autoload) पैरामीटर्स class - क्लास का नाम। autoload - डिफ़ॉल्ट रूप से __autoload को कॉल करना है या नहीं। रिटर्न वैल्यू यदि क्ल

© कॉपीराइट https://in.wsxdn.com सर्वाधिकार सुरक्षित
विशेषताओवरलोडिंग (PHP में अनुकरण)ओवरराइडिंग
विधि__call() / __callStatic()चाइल्ड क्लास में पुनर्परिभाषित
पैरामीटर्सभिन्न हो सकते हैंसमान होने चाहिए
स्कोपसमान क्लासपैरेंट-चाइल्ड विरासत
बाइंडिंगरनटाइमरनटाइम (लेट स्टैटिक बाइंडिंग)