คำตอบที่ได้รับการยอมรับในปัจจุบันโดย @Franck จะใช้งานได้ แต่ไม่ใช่ในความเป็นจริงหลายมรดก แต่อินสแตนซ์ย่อยของคลาสที่กำหนดไว้นอกขอบเขตยังมี__call()
ชวเลข $this->childInstance->method(args)
ทุกที่ที่คุณต้องการ
คำตอบที่แน่นอน
ไม่คุณไม่สามารถตามลำดับไม่ได้จริงๆตามที่ใช้extends
คำหลักบอกว่า:
คลาสที่ขยายเพิ่มขึ้นอยู่กับคลาสพื้นฐานเดียวเสมอนั่นคือไม่รองรับการสืบทอดหลายรายการ
คำตอบที่แท้จริง
อย่างไรก็ตามตามที่ @adam แนะนำอย่างถูกต้องสิ่งนี้ไม่ได้เป็นการห้ามไม่ให้คุณใช้การสืบทอดลำดับชั้นหลายครั้ง
คุณสามารถขยายชั้นเรียนหนึ่งไปอีกชั้นหนึ่งด้วยอีกชั้นหนึ่ง ...
ตัวอย่างง่ายๆในเรื่องนี้คือ:
class firstInheritance{}
class secondInheritance extends firstInheritance{}
class someFinalClass extends secondInheritance{}
//...and so on...
โน๊ตสำคัญ
ตามที่คุณอาจสังเกตเห็นคุณสามารถทำ intehritance หลาย (2+) ตามลำดับชั้นถ้าคุณมีการควบคุมชั้นเรียนทั้งหมดรวมอยู่ในกระบวนการ - นั่นหมายความว่าคุณไม่สามารถใช้วิธีนี้เช่นในตัวชั้นเรียนหรือกับชั้นเรียนที่คุณ ไม่สามารถแก้ไขได้ - หากคุณต้องการทำเช่นนั้นคุณจะเหลือโซลูชัน @Franck - อินสแตนซ์ย่อย
... และตัวอย่างสุดท้ายกับผลลัพธ์บางส่วน:
class A{
function a_hi(){
echo "I am a of A".PHP_EOL."<br>".PHP_EOL;
}
}
class B extends A{
function b_hi(){
echo "I am b of B".PHP_EOL."<br>".PHP_EOL;
}
}
class C extends B{
function c_hi(){
echo "I am c of C".PHP_EOL."<br>".PHP_EOL;
}
}
$myTestInstance = new C();
$myTestInstance->a_hi();
$myTestInstance->b_hi();
$myTestInstance->c_hi();
ซึ่งเอาท์พุท
I am a of A
I am b of B
I am c of C