เราจะเผชิญสองกรณีในขณะที่เรียกเมธอดตัวสร้างพาเรนต์ในคลาสย่อย
กรณีที่1
เราไม่สามารถเรียกใช้คอนสตรัคเตอร์คลาสหลักในคลาสย่อยได้โดยตรงหากคลาสย่อยกำหนดคอนสตรัคเตอร์ ในการรันตัวสร้างพาเรนต์ จำเป็นต้องมีการเรียกไปยังพาเรนต์::__construct() ภายในคอนสตรัคเตอร์ย่อย
ตัวอย่าง
<?php
class grandpa{
public function __construct(){
echo "I am in Tutorials Point"."\n";
}
}
class papa extends grandpa{
public function __construct(){
parent::__construct();
echo "I am not in Tutorials Point";
}
}
$obj = new papa();
?> Output: I am in Tutorials Point I am not in Tutorials Point
คำอธิบาย
ในตัวอย่างข้างต้น เราได้ใช้ parent::__construct() เพื่อเรียกตัวสร้างคลาสหลัก
กรณีที่2
หากเด็กไม่ได้กำหนดคอนสตรัคเตอร์ก็อาจสืบทอดมาจากคลาสพาเรนต์เหมือนกับวิธีการคลาสปกติ (หากไม่ได้ประกาศเป็นแบบส่วนตัว)
ตัวอย่าง
<?php
class grandpa{
public function __construct(){
echo "I am in Tutorials point";
}
}
class papa extends grandpa{
}
$obj = new papa();
?> ผลลัพธ์
I am in Tutorials point
คำอธิบาย
ที่นี่คลาสพาเรนต์ถูกเรียกโดยปริยายเพราะในคลาสลูกเราไม่ได้ประกาศฟังก์ชันคอนสตรัคเตอร์ในคลาสย่อย