Constructor เมื่อสืบทอดใน OOP ใน PHP
เมื่อทำการสืบทอด สามารถกำหนด constructor ของคลาสแม่ใหม่ได้ มาดูตัวอย่างกัน สมมติว่าเรามีคลาสแม่ดังต่อไปนี้:
<?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
class Student extends User {
}
?>
สมมติว่าเราต้องการในคลาสลูก ขยาย constructor โดยเพิ่ม พารามิเตอร์เสริมเข้าไป:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
}
}
?>
ในกรณีนี้ เราจำเป็นต้อง
เรียก constructor ของคลาสแม่
ผ่าน parent::__construct() ในบรรทัดแรก:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
คำสั่ง parent::__construct() โดยเนื้อแท้คือ
constructor ของคลาสแม่ ดังนั้น
ส่งพารามิเตอร์ที่ต้องการเข้าไป:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
ตอนนี้ในคลาสลูก ให้บันทึกปีการศึกษา ลงในคุณสมบัติของคลาสลูก:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
$this->year = $year;
}
}
?>
มาสร้าง getter สำหรับปีการศึกษากัน:
<?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;
}
}
?>
สมมติว่าคลาส Employee สืบทอด
มาจากคลาส User จาก
บทเรียนนี้
กำหนด constructor ของคลาสแม่ใหม่ในคลาส Employee
โดยเพิ่มพารามิเตอร์อายุและเงินเดือนเข้าไป
สร้าง getter สำหรับอายุและ เงินเดือน