Klicanje preoblikovane metode v OOP v PHP

Pri preoblikovanju potomec izgubi dostop do preoblikovane metode starša. Kljub temu je dostop do nje še vedno mogoč. To naredimo s ključno besedo parent, ki kaže na nadrejeni razred.

Poglejmo si primer, kdaj bomo morda potrebovali dostop do metode starša. Recimo, da imamo naslednji nadrejeni razred:

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

Recimo, da smo v razredu-potomcu preoblikovali metodo starša:

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

Opazimo lahko, da se v preoblikovani metodi ob izpolnjevanju pogoja dejansko izvede koda metode starša. Izkoristimo nepotrebno podvajanje kode.

Lahko se ga znebimo, če pokličemo metodo starša. Naredimo to:

php<?php
  class Student extends User {
    public function setName($name) {
      if (strlen($name) > 0) {
        parent::setName($name); // metoda starša
      } else {
        echo 'napaka imena študenta';
      }
    }
  }
?>
Задание 1

Podana je naslednja koda:

php<?php
  class User {
    private $age;
    
    public function setAge($age) {
      if ($age >= 0) {
        $this->age = $age;
      } else {
        echo 'potrebna starost je večja od 0';
      }
    }
  }
  
  class Employee extends User {
    public function setAge($age) {
      if ($age <= 120) {
        if ($age >= 0) {
          $this->age = $age;
        } else {
          echo 'potrebna starost je večja od 0';
        }
      } else {
        echo 'potrebna starost je manjša od 120';
      }
    }
  }
?>

V razredu Employee popravite poenostavite nastavljanje starosti z uporabo izvirne metode starša.