পিএইচপিতে ওওপি-তে প্যারেন্ট মেথড ওভাররাইডিং

একটি চাইল্ড ক্লাস একটি প্যারেন্ট মেথড ওভাররাইড করতে পারে একই নাম সহ একটি মেথড তৈরি করে। আসুন একটি উদাহরণ দেখি। ধরুন আমাদের নিম্নলিখিত প্যারেন্ট ক্লাস আছে:

php<?php
  class User {
    private $name;
    
    public function setName($name) {
      $this->name = $name;
    }
    public function getName() {
      return $this->name;
    }
  }
?>

চলুন চাইল্ড ক্লাসে একই নামের একটি মেথড তৈরি করি:

php<?php
  class Student extends User {
    public function setName($name) {
      
    }
  }
?>

সাধারণত, প্যারেন্ট মেথড ওভাররাইড করা প্রয়োজন যাতে সেই মেথডের আচরণ পরিবর্তন বা সম্পূরক করা যায়। আসুন আমাদের ক্ষেত্রে নামের দৈর্ঘ্য পরীক্ষা যোগ করি:

php<?php
  class Student extends User {
    public function setName($name) {
      if (strlen($name) > 0) {
        $this->name = $name;
      } else {
        echo 'student name error';
      }
    }
  }
?>

আসুন এটা যাচাই করব যে সত্যিই ওভাররাইড করা মেথডটিই কল হয়। প্রথমে চাইল্ড ক্লাসের একটি অবজেক্ট তৈরি করি:

php<?php
  $student = new Student;
?>

এখন আমাদের মেথডটি কল করি, এতে একটি সঠিক মান পাস করে:

php<?php
  $student->setName('john');
?>

এবং এখন মেথডটি কল করি, পাস করে একটি ভুল মান। ফলস্বরূপ আমরা একটি থ্রোন এক্সেপশন দেখতে পাব:

php<?php
  $student->setName(''); // ভুল
?>
Задание 1

User ক্লাসে বয়সের জন্য গেটার এবং সেটার তৈরি করুন।

Задание 2

Employee ক্লাসে বয়সের সেটার ওভাররাইড করুন এবং এতে একটি চেক যোগ করুন যে বয়স 18 থেকে 65 বছরের মধ্যে।