Vecāku metožu pārrakstīšana OOP PHP

Bērnu klase var pārrakstīt vecāka metodi, izveidojot metodi ar tādu pašu nosaukumu. Apskatīsim piemēru. Pieņemsim, ka mums ir šāda vecāku klase:

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

Bērnu klasē izveidosim tādas pašas nosaukuma metodi:

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

Parasti vecāka metodes pārrakstīšana ir nepieciešama, lai mainītu vai papildinātu šīs metodes darbību. Mūsu gadījumā pievienosim vārda garuma pārbaudi:

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

Pārliecināsimies, ka tiek izsaukta tieši pārrakstītā metode. Vispirms izveidosim objektu bērnu klases:

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

Tagad izsauksim mūsu metodi, padodot tai korektu vērtību:

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

Tagad izsauksim metodi, padodot tai nekorektu vērtību. Rezultātā redzēsim izmesto izņēmumu:

php<?php
  $student->setName(''); // kļūda
?>
Задание 1

Klasē User izveidojiet vecuma getter un setter.

Задание 2

Klasē Employee pārrakstiet vecuma setter un izveidojiet tajā pārbaudi, ka vecums ir no 18 līdz 65 gadiem.