Pozivanje redefinisanih metoda u OOP u PHP-u

Prilikom redefinisanja, potomak gubi pristup redefinisanoj metodi roditelja. Međutim, i dalje mu je moguće pristupiti. Ovo se radi pomoću ključne reči parent, koja ukazuje na roditeljsku klasu.

Pogledajmo primer kada nam može zatrebati pristup metodu roditelja. Neka imamo sledeću klasu-roditelj:

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

Neka smo u klasi-potomku redefinisali metodu roditelja:

php<?php
  class Student extends User {
    public function setName($name) {
      if (strlen($name) > 0) {
        $this->name = $name;
      } else {
        echo 'Greška u imenu studenta';
      }
    }
  }
?>

Može se primetiti da u redefinisanoj metodi, prilikom ispunjenja uslova, faktički izvršava kod roditeljske metode. Ispada da imamo nepotrebno dupliranje koda.

Može se od njega osloboditi ako se pozove metod roditelja. Učinimo to:

php<?php
  class Student extends User {
    public function setName($name) {
      if (strlen($name) > 0) {
        parent::setName($name); // metoda roditelja
      } else {
        echo 'Greška u imenu studenta';
      }
    }
  }
?>
Задание 1

Dat je sledeći kod:

php<?php
  class User {
    private $age;
    
    public function setAge($age) {
      if ($age >= 0) {
        $this->age = $age;
      } else {
        echo 'Potrebna starost veća od 0';
      }
    }
  }
  
  class Employee extends User {
    public function setAge($age) {
      if ($age <= 120) {
        if ($age >= 0) {
          $this->age = $age;
        } else {
          echo 'Potrebna starost veća od 0';
        }
      } else {
        echo 'Potrebna starost manja od 120';
      }
    }
  }
?>

U klasi Employee ispravite pojednostavite setter za starost, koristeći originalni metod roditelja.