მშობელ კლასის მეთოდების გადაწერა OOP-ში PHP-ში

შვილობილ კლასს შეუძლია გადაწეროს მშობელი კლასის მეთოდი, შექმნას მეთოდი იმავე სახელით. მოდით შევხედოთ მაგალითს. დავუშვათ, ჩვენ გვაქვს შემდეგი მშობელი კლასი:

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 წლამდეა.