ওওপি-তে পিএইচপি-তে ওভাররাইড করা মেথড কল করা
ওভাররাইড করার সময়, চাইল্ড ওভাররাইড করা মেথডে
অ্যাক্সেস হারায়। তবে, যাইহোক, এটিতে অ্যাক্সেস
পাওয়া সম্ভব। এটি 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';
}
}
}
?>
লক্ষ্য করা যায়, ওভাররাইড করা মেথডে শর্ত পূরণ হলে মূলত প্যারেন্ট মেথডের কোডই এক্সিকিউট হয়। এর ফলে কোডের অন必要な ডুপ্লিকেশন হয়।
প্যারেন্টের মেথড কল করে এটি এড়ানো যায়। আসুন এটি করি:
<?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 ক্লাসে, বয়সের সেটার সরল করুন,
প্যারেন্টের অরিজিনাল মেথড ব্যবহার করে।