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

PHP ओवरलोडिंग: डायनामिक प्रॉपर्टीज़ और मेथड्स


परिचय

PHP में "ओवरलोडिंग" का अर्थ C++ या Java जैसे अन्य ऑब्जेक्ट-ओरिएंटेड भाषाओं से भिन्न है। वहां ओवरलोडिंग का तात्पर्य एक ही नाम के कई मेथड्स को अलग-अलग आर्गुमेंट्स या रिटर्न टाइप के साथ परिभाषित करना होता है। लेकिन PHP में, ओवरलोडिंग का मतलब है मैजिक मेथड्स (डबल अंडरस्कोर से शुरू होने वाले मेथड नाम) का उपयोग करके रनटाइम पर डायनामिक रूप से प्रॉपर्टीज़ और मेथड्स बनाना।

प्रॉपर्टी ओवरलोडिंग के लिए मैजिक मेथड्स

निम्नलिखित मैजिक मेथड्स प्रॉपर्टी ओवरलोडिंग के लिए उपयोग किए जाते हैं:

सिंटैक्स

public __set(string $name, mixed $value): void
public __get(string $name): mixed
public __isset(string $name): bool
public __unset(string $name): void
  • __set() - तब चलता है जब inaccessible (protected, private या non-existing) प्रॉपर्टी में डेटा लिखा जाता है।
  • __get() - inaccessible प्रॉपर्टी से डेटा पढ़ता है।
  • __isset() - inaccessible प्रॉपर्टी पर isset() या empty() कॉल होने पर ट्रिगर होता है।
  • __unset() - inaccessible प्रॉपर्टी पर unset() कॉल होने पर आह्वान होता है।

उदाहरण: डायनामिक प्रॉपर्टी

निम्न कोड में, एक डायनामिक प्रॉपर्टी myprop को सेट, रिट्रीव और अनसेट किया गया है:

<?php
class myclass {
    public function __set($name, $value) {
        echo "setting $name property to $value \n";
        $this->$name = $value;
    }
    public function __get($name) {
        echo "value of $name property is ";
        return $this->$name;
    }
    public function __isset($name) {
        return isset($this->$name);
    }
    public function __unset($name) {
        unset($this->$name);
    }
}

$obj = new myclass();
$obj->myprop = "test";
echo $obj->myprop . "\n";
var_dump(isset($obj->myprop));
unset($obj->myprop);
var_dump(isset($obj->myprop));
?>

आउटपुट

setting myprop property to test
value of myprop property is test
bool(true)
bool(false)

मेथड ओवरलोडिंग

मेथड्स को डायनामिक रूप से सेट करने के लिए दो मैजिक मेथड्स उपयोग किए जाते हैं: __call() और __callStatic()।

सिंटैक्स

public __call(string $name, array $arguments): mixed
public static __callStatic(string $name, array $arguments): mixed
  • __call() - ऑब्जेक्ट कॉन्टेक्स्ट में inaccessible मेथड आह्वान होने पर ट्रिगर होता है।
  • __callStatic() - स्टेटिक कॉन्टेक्स्ट में inaccessible मेथड आह्वान होने पर ट्रिगर होता है।

उदाहरण: मेथड ओवरलोडिंग

<?php
class myclass {
    public function __call($name, $args) {
        // नोट: $name का मान केस-सेंसिटिव होता है
        echo "Calling object method $name with " . implode(" ", $args) . "\n";
    }
    public static function __callStatic($name, $args) {
        echo "Calling static method $name with " . implode(" ", $args) . "\n";
    }
}

$obj = new myclass();
$obj->mymethod("Hello World!");
myclass::mymethod("Hello World!");
?>

आउटपुट

Calling object method mymethod with Hello World!
Calling static method mymethod with Hello World!
  1. - PHP में फ़ंक्शन ओवरलोडिंग और ओवरराइडिंग

    PHP में फ़ंक्शन ओवरलोडिंग फ़ंक्शन ओवरलोडिंग एक ऐसी सुविधा है जो समान नाम वाले कई मेथड्स बनाने की अनुमति देती है जो उनके द्वारा स्वीकार किए गए इनपुट पैरामीटर्स के प्रकार के आधार पर अलग-अलग काम करते हैं। महत्वपूर्ण: PHP पारंपरिक कंपाइल-टाइम फ़ंक्शन ओवरलोडिंग (C++/Java जैसा) **समर्थन नहीं करता**। इसक

  1. - PHP में गेटर्स और सेटर्स मेथड्स क्या हैं?

    इस लेख में, हम PHP में गेटर और सेटर रणनीतियां बनाने का सबसे अच्छा तरीका सीखते हैं। गेटर और सेटर रणनीतियों का उपयोग तब किया जाता है जब हमें एंड-यूजर्स द्वारा वेरिएबल्स तक सीधी पहुंच को प्रतिबंधित करने की आवश्यकता होती है। गेटर्स और सेटर्स वे मेथड्स हैं जिनका उपयोग वेरिएबल्स के मानों को परिभाषित या पु

  1. - PHP में मेथड ओवरलोडिंग क्या है?

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