Valideyn metodlarinin OOP-də PHP-də yenidən təyin edilməsi

Alt sinif, eyni adlı metod yaradaraq valideyn metodunu yenidən təyin edə bilər. Nümunəyə baxaq. Tutaq ki, bizim aşağıdakı valideyn sinifimiz var:

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

Gəlin alt sinifdə eyniadlı metod yaradaq:

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

Bir qayda olaraq, valideyn metodlarının yenidən təyin edilməsi, bu metodun davranışını dəyişdirmək və ya əlavə etmək üçün lazımdır. Gəlin bizim vəziyyətimizdə adın uzunluğunu yoxlama əlavə edək:

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

Gəlin əmin olaq ki, dəqiq yenidən təyin edilmiş metod çağırılır. Əvvəlcə alt sinifin obyektini yaradaq:

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

İndi metodumuzu çağıraq, ona uyğun dəyər ötürərək:

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

İndi isə metodu, ona uyğun olmayan dəyər ötürərək çağıraq. Nəticədə yaranan istisnanı görəcəyik:

php<?php
  $student->setName(''); // xəta
?>
Задание 1

User sinfindində yaş üçün getter və setter edin.

Задание 2

Employee sinfindində yaş setterını yenidən təyin edin və onunda yaşın 18 ilə 65 arasında olduğunu yoxlayın.