परिचय
सी ++ या जावा जैसी अन्य ऑब्जेक्ट ओरिएंटेड भाषाओं की तुलना में PHP में ओवरलोडिंग की व्याख्या अलग है, जिसमें शब्द का अर्थ है एक ही नाम की विधि के साथ एक से अधिक बार लेकिन विभिन्न तर्कों और / या रिटर्न प्रकार के साथ एक वर्ग रखने की क्षमता। दूसरी ओर PHP में, डायनामिकली क्रिएटिंग प्रॉपर्टीज और मेथड्स की विशेषता को ओवरलोडिंग के रूप में जाना जाता है। PHP के जादुई तरीके (डबल अंडरस्कोर से शुरू होने वाले मेथड नेम) का इस्तेमाल डायनेमिक प्रॉपर्टीज और मेथड्स को सेट करने के लिए किया जाता है।
गुणों को अधिभारित करने के लिए निम्नलिखित जादुई विधियों का उपयोग किया जाता है -
सिंटैक्स
public __set ( string $name , mixed $value ) : void public __get ( string $name ) : mixed public __isset ( string $name ) : bool public __unset ( string $name ) : void
__set() दुर्गम संपत्तियों के लिए डेटा लिखने के लिए चलाया जाता है जो संरक्षित या निजी या गैर-मौजूद हैं।
__get() दुर्गम गुणों से डेटा पढ़ता है।
__isset() दुर्गम गुणों पर isset() या खाली() कॉल करता है।
__unset() को तब लागू किया जाता है जब 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 test bool(true) bool(false)
विधि ओवरलोडिंग
विधियों को गतिशील रूप से सेट करने के लिए उपयोग की जाने वाली दो जादुई विधियाँ हैं __call() और __callStatic()
public __call ( string $name , array $arguments ) : mixed public static __callStatic ( string $name , array $arguments ) : mixed
__call() किसी वस्तु के संदर्भ में अप्राप्य विधियों को लागू करते समय ट्रिगर होता है।
__callStatic() एक स्थिर संदर्भ में अप्राप्य विधियों को लागू करते समय ट्रिगर किया जाता है।
निम्नलिखित परीक्षा PHP में विधि ओवरलोडिंग को प्रदर्शित करती है
उदाहरण
<?php class myclass{ public function __call($name, $args){ // Note: value of $name is case sensitive. 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!