Konstruktør ved arv i OOP i PHP

Ved arv kan man overstyre forelderens konstruktør. La oss se på et eksempel. La oss si at vi har følgende forelderklasse:

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

La oss si at følgende klasse arver fra forelderklassen:

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

La oss si at vi i barnet-klassen vil utvide konstruktøren, ved å legge til flere parametere:

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

I dette tilfellet er vi nødt til å kalle forelderens konstruktør på første linje via parent::__construct():

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

Kommandoen parent::__construct() er i hovedsak forelderens konstruktør. Derfor sender vi de nødvendige parameterne til den:

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

Nå kan vi i barnet-klassen skrive studieåret inn i dens egen egenskap:

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

La oss lage en getter for studieåret:

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

La klassen Employee arve fra klassen User fra denne leksjonen.

Задание 2

Overstyr i klassen Employee forelderens konstruktør, og legg til parametere for alder og lønn.

Задание 3

Lag gettere for alder og lønn.