გადაფარული მეთოდის გამოძახება OOP-ში PHP-ში

გადაფარვისას მემკვიდრე კარგავს წვდომას მშობელი კლასის გადაფარულ მეთოდზე. მაგრამ, მასზე წვდომა მაინც შესაძლებელია. ეს ხდება parent საკვანძო სიტყვის გამოყენებით, რომელიც მიუთითებს მშობელ კლასზე.

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

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) {
      if (strlen($name) > 0) {
        $this->name = $name;
      } else {
        echo 'student name error';
      }
    }
  }
?>

შეიძლება შეამჩნიოთ, რომ გადაფარულ მეთოდში პირობის შესრულებისას ფაქტობრივად შესრულებულია მშობელი კლასის მეთოდის კოდი. შედეგად მივიღებთ არასაჭირო კოდის დუბლირებას.

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

php<?php
  class Student extends User {
    public function setName($name) {
      if (strlen($name) > 0) {
        parent::setName($name); // მშობელი კლასის მეთოდი
      } else {
        echo 'student name error';
      }
    }
  }
?>
Задание 1

მოცემულია შემდეგი კოდი:

php<?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 კლასში შეასწორეთ ასაკის სეტერი, გამოიყენეთ მშობელი კლასის ორიგინალური მეთოდი.