แนะนำตัว
ใช้ ขั้นสุดท้าย คำหลักในคำจำกัดความของวิธีการอินสแตนซ์ในคลาส PHP ป้องกันไม่ให้ถูกแทนที่โดยคลาสย่อย ในทำนองเดียวกัน หากใช้ final ในคำจำกัดความของ class เอง คลาสดังกล่าวจะไม่สามารถขยายได้
ไวยากรณ์
final class myclass {} class myclass{ final method mymethod(){} }
ตัวอย่างวิธีสุดท้าย
ในตัวอย่างต่อไปนี้ การพยายามแทนที่เมธอดสุดท้ายทำให้เกิดข้อผิดพลาด
ตัวอย่าง
<?php class parentclass{ final function test(){ echo "final method in parent class"; } } class childclass extends parentclass{ function test(){ echo "overriding final method in parent class"; } } $obj=new childclass(); $obj->test(); ?>
ผลลัพธ์
ผลลัพธ์แสดงข้อความแสดงข้อผิดพลาดต่อไปนี้
PHP Fatal error: Cannot override final method parentclass::test() in line 16
ตัวอย่างคลาสสุดท้าย
ในทำนองเดียวกันคลาสสุดท้ายไม่สามารถสืบทอดได้ดังตัวอย่างต่อไปนี้
ตัวอย่าง
<?php final class parentclass{ final function test(){ echo "final method in parent class"; } } class childclass extends parentclass{ function test(){ echo "overriding final method in parent class"; } } $obj=new childclass(); $obj->test(); ?>
ผลลัพธ์
ผลลัพธ์แสดงข้อความแสดงข้อผิดพลาดต่อไปนี้
PHP Fatal error: Class childclass may not inherit from final class (parentclass) in line 16