Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

คีย์เวิร์ด final ใน PHP

บทนำ

คีย์เวิร์ด final ใช้เพื่อป้องกันการ Override เมธอดหรือการ Extend คลาส:

  • final method - ไม่สามารถ Override ได้ใน Child Class
  • final class - ไม่สามารถ Extend (สืบทอด) ได้

Syntax

final class MyClass { }
class MyClass {
    final public function myMethod() { }
}

ตัวอย่าง: Final Method

พยายาม Override final method จะเกิด Fatal Error:

<?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();
?>

ผลลัพธ์ (Error)

PHP Fatal error: Cannot override final method parentclass::test()

ตัวอย่าง: Final Class

พยายาม Extend final class จะเกิด Fatal Error:

<?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();
?>

ผลลัพธ์ (Error)

PHP Fatal error: Class childclass may not inherit from final class (parentclass)

เมื่อไหร่ควรใช้ final?

  • Final Method: เมื่อมี Logic สำคัญที่ไม่ควรเปลี่ยนแปลง เช่น Validation, Security Checks, Core Algorithm
  • Final Class: เมื่อออกแบบคลาสให้สมบูรณ์ ไม่ควรถูก Extend เช่น Value Objects, Immutable Classes, Utility Classes

ข้อควรระวัง

  • final ไม่ได้ผลกับ Properties (แค่ Methods และ Class)
  • Private methods เป็น final โดยนัยแล้ว (เพราะ Child เข้าถึงไม่ได้)
  • ใช้ final อย่างมีเหตุผล - ใช้มากเกินไปอาจทำให้ยากต่อการ Extend ในอนาคต