OOP-də PHP-də override edilmiş metodun çağırılması

Override etdikdə nəsilin override edilmiş valideyn metoduna çıxışı itir. Lakin buna çıxışı yenə də əldə etmək olar. Bu, valideyn sinfinə işarə edən parent açar sözü vasitəsilə edilir.

Gəlin nümunə ilə baxaq, nə vaxt valideyn metoduna çıxışımız ola bilər. Tutaq ki, bizdə aşağıdakı valideyn sinif var:

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

Tutaq ki, biz nəsil sinifdə valideyn metodunu override etdik:

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

Qeyd etmək olar ki, override edilmiş metodda şərt yerinə yetirildikdə faktiki olaraq valideyn metodunun kodu icra olunur. Nəticədə lazımsız kod təkrarı yaranır.

Bundan valideyn metodunu çağırmaqla xilas olmaq olar. Gəlin bunu edək:

php<?php
  class Student extends User {
    public function setName($name) {
      if (strlen($name) > 0) {
        parent::setName($name); // valideyn metodu
      } else {
        echo 'student name error';
      }
    }
  }
?>
Задание 1

Aşağıdakı kod verilmişdir:

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 sinfində yaş setterini düzəldin, valideynin orijinal metodundan istifadə edərək sadələşdirin.