Konstruktor při dědění v OOP v PHP

Při dědění lze přepsat konstruktor rodiče. Podívejme se na příklad. Předpokládejme, že máme následující třídu rodiče:

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

Předpokládejme, že z rodičovské třídy dědí následující třída:

php<?php
  class Student extends User {
    
  }
?>

Předpokládejme, že chceme v potomní třídě rozšířit konstruktor přidáním dodatečných parametrů:

php<?php
  class Student extends User {
    private $year;
    
    public function __construct($name, $surn, $year) {
      
    }
  }
?>

V tomto případě musíme jako první řádek zavolat konstruktor rodiče pomocí parent::__construct():

php<?php
  class Student extends User {
    private $year;
    
    public function __construct($name, $surn, $year) {
      parent::__construct($name, $surn);
    }
  }
?>

Příkaz parent::__construct() je v podstatě konstruktorem rodiče. Proto do něj předáme požadované parametry:

php<?php
  class Student extends User {
    private $year;
    
    public function __construct($name, $surn, $year) {
      parent::__construct($name, $surn);
    }
  }
?>

Nyní v potomkovi nastavíme rok studia do vlastní vlastnosti potomka:

php<?php
  class Student extends User {
    private $year;
    
    public function __construct($name, $surn, $year) {
      parent::__construct($name, $surn);
      $this->year = $year;
    }
  }
?>

Vytvořme getter pro rok studia:

php<?php
  class Student extends User {
    private $year;
    
    public function __construct($name, $surn, $year) {
      parent::__construct($name, $surn);
      $this->year = $year;
    }
    
    public function getYear() {
      return $this->year;
    }
  }
?>
Задание 1

Předpokládejme, že třída Employee dědí z třídy User z této lekce.

Задание 2

Přepište v třídě Employee konstruktor rodiče přidáním parametru s věkem a platem.

Задание 3

Vytvořte gettery pro věk a plat.