Constructor เมื่อสืบทอดใน OOP ใน PHP

เมื่อทำการสืบทอด สามารถกำหนด constructor ของคลาสแม่ใหม่ได้ มาดูตัวอย่างกัน สมมติว่าเรามีคลาสแม่ดังต่อไปนี้:

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

สมมติว่าเราต้องการในคลาสลูก ขยาย constructor โดยเพิ่ม พารามิเตอร์เสริมเข้าไป:

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

ในกรณีนี้ เราจำเป็นต้อง เรียก constructor ของคลาสแม่ ผ่าน parent::__construct() ในบรรทัดแรก:

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

คำสั่ง parent::__construct() โดยเนื้อแท้คือ constructor ของคลาสแม่ ดังนั้น ส่งพารามิเตอร์ที่ต้องการเข้าไป:

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

มาสร้าง getter สำหรับปีการศึกษากัน:

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

กำหนด constructor ของคลาสแม่ใหม่ในคลาส Employee โดยเพิ่มพารามิเตอร์อายุและเงินเดือนเข้าไป

Задание 3

สร้าง getter สำหรับอายุและ เงินเดือน