Prepisovanje metod starša v OOP v PHP

Podrejeni razred lahko prepiše metodo starša z ustvarjanjem metode z enakim imenom. Poglejmo si primer. Recimo, da imamo naslednji starševski razred:

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

V podrejenem razredu ustvarimo metodo z enakim imenom:

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

Praviloma je prepisovanje metod starša potrebno zato, da spremenimo ali dopolnimo vedenje te metode. V našem primeru dodajmo preverjanje dolžine imena:

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

Prepričajmo se, da se kliče natančno prepisana metoda. Najprej ustvarimo objekt podrejenega razreda:

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

Zdaj pokličimo našo metodo, in ji posredujmo pravilno vrednost:

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

Zdaj pa pokličimo metodo in ji posredujmo nepravilno vrednost. Kot rezultat bomo videli izvrženo izjemo:

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

V razredu User naredite getter in setter za starost.

Задание 2

V razredu Employee prepišite setter za starost in v njem dodajte preverbo, da je starost od 18 do 65 let.