Конструктор при наследовании в ООП в PHP

При наследовании можно переопределять конструктор родителя. Давайте посмотрим на примере. Пусть у нас есть следующий класс родителя:

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;
    }
  }
?>

Пусть от родительского класса наследует следующий класс:

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

Пусть мы хотим в классе-потомке расширить конструктор, добавив в него дополнительные параметры:

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

В этом случае нам обязательно нужно первой строкой вызвать конструктор родителя через parent::__construct():

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

Команда parent::__construct() по сути является конструктором родителя. Поэтому передадим в него требуемые параметры:

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

Теперь в потомке год обучения запишем в свое свойство потомка:

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

Сделаем геттер для года обучения:

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

Пусть класс Employee наследует от класса User из данного урока.

Задание 2

Переопределите в классе Employee конструктор родителя, добавив в него параметр с возрастом и зарплатой.

Задание 3

Сделайте геттеры для возраста и зарплаты.