Thirrja e metodës së ripërcaktuar në OOP në PHP

Gjatë ripërcaktimit, fëmija humb qasjen në metodën e ripërcaktuar të prindit. Megjithatë, mund të merret qasja në të. Kjo bëhet duke përdorur fjalën kyçe parent, e cila tregon te klasa prind.

Le të shohim një shembull kur mund të na duhet qasje në metodën prind. Le të supozojmë se kemi këtë klasë-prind:

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

Le të supozojmë se në klasën-fëmijë kemi ripërcaktuar metodën e prindit:

php<?php
  class Student extends User {
    public function setName($name) {
      if (strlen($name) > 0) {
        $this->name = $name;
      } else {
        echo 'gabim në emrin e studentit';
      }
    }
  }
?>

Mund të vërehet se në metodën e ripërcaktuar gjatë plotësimit të kushtit në thelb ekzekutohet kodi i metodës prind. Rezulton një dublim i panevojshëm kodi.

Mund të shpëtohemi prej tij nëse thirret metoda e prindit. Le ta bëjmë këtë:

php<?php
  class Student extends User {
    public function setName($name) {
      if (strlen($name) > 0) {
        parent::setName($name); // metoda e prindit
      } else {
        echo 'gabim në emrin e studentit';
      }
    }
  }
?>
Задание 1

Jepet kodi në vijim:

php<?php
  class User {
    private $age;
    
    public function setAge($age) {
      if ($age >= 0) {
        $this->age = $age;
      } else {
        echo 'duhet mosha më shumë se 0';
      }
    }
  }
  
  class Employee extends User {
    public function setAge($age) {
      if ($age <= 120) {
        if ($age >= 0) {
          $this->age = $age;
        } else {
          echo 'duhet mosha më shumë se 0';
        }
      } else {
        echo 'duhet mosha më pak se 120';
      }
    }
  }
?>

Në klasën Employee korrigjoni (thjeshtoni) vendosësin e moshës, duke përdorur metodën origjinale të prindit.