แนะนำตัว
ใช้ ขั้นสุดท้าย คำหลักในคำจำกัดความของวิธีการอินสแตนซ์ในคลาส 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