ओओपी में PHP में ओवरराइड किए गए मेथड को कॉल करना
ओवरराइडिंग करते समय, चाइल्ड
पैरेंट के ओवरराइड किए गए मेथड
तक पहुंच खो देता है। हालाँकि, फिर भी
उस तक पहुँच प्राप्त की जा सकती है। यह
parent कीवर्ड का उपयोग करके किया जाता है,
जो पैरेंट क्लास को इंगित करता है।
आइए एक उदाहरण देखें, जब हमें पैरेंट मेथड तक पहुँच की आवश्यकता हो सकती है। मान लीजिए कि हमारे पास निम्नलिखित पैरेंट क्लास है:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
मान लीजिए कि हमने चाइल्ड क्लास में पैरेंट के मेथड को ओवरराइड कर दिया है:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
यह देखा जा सकता है कि ओवरराइड किए गए मेथड में, जब कंडीशन सही होती है, तो वास्तव में पैरेंट मेथड का कोड execute होता है। इससे कोड की अनावश्यक डुप्लिकेशन हो रही है।
पैरेंट के मेथड को कॉल करके इस डुप्लिकेशन को हटाया जा सकता है। आइए इसे करते हैं:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
parent::setName($name); // पैरेंट का मेथड
} else {
echo 'student name error';
}
}
}
?>
निम्नलिखित कोड दिया गया है:
<?php
class User {
private $age;
public function setAge($age) {
if ($age >= 0) {
$this->age = $age;
} else {
echo 'need age more 0';
}
}
}
class Employee extends User {
public function setAge($age) {
if ($age <= 120) {
if ($age >= 0) {
$this->age = $age;
} else {
echo 'need age more 0';
}
} else {
echo 'need age less 120';
}
}
}
?>
Employee क्लास में,
एज सेटर को सरल बनाएं, मूल
पैरेंट मेथड का उपयोग करके।