เราจะเผชิญสองกรณีในขณะที่เรียกเมธอดตัวสร้างพาเรนต์ในคลาสย่อย
กรณีที่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
คำอธิบาย
ที่นี่คลาสพาเรนต์ถูกเรียกโดยปริยายเพราะในคลาสลูกเราไม่ได้ประกาศฟังก์ชันคอนสตรัคเตอร์ในคลาสย่อย