परिचय
PHP क्लास में इंस्टेंस मेथड की परिभाषा में final कीवर्ड का उपयोग करके उसे चाइल्ड क्लास द्वारा ओवरराइड किए जाने से रोका जा सकता है। इसी तरह, यदि final का उपयोग क्लास की परिभाषा में ही किया जाए, तो ऐसी क्लास को एक्सटेंड नहीं किया जा सकता।
सिंटैक्स
final class myclass {}
class myclass {
final function mymethod() {}
}
उदाहरण 1: Final मेथड ओवरराइड नहीं किया जा सकता
<?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
उदाहरण 2: Final क्लास को एक्सटेंड नहीं किया जा सकता
<?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
उपयोग के मामले
- Final मेथड: जब आप चाहते हैं कि एक महत्वपूर्ण मेथड का व्यवहार कभी न बदले (जैसे सुरक्षा जांच, कोर एल्गोरिदम)।
- Final क्लास: जब आप पूरी क्लास को एक्सटेंशन के लिए बंद करना चाहते हैं (जैसे immutable value objects, यूटिलिटी क्लासेज)।
- Final प्रॉपर्टीज़ PHP 8.1+ में समर्थित हैं:
final public string $name;
नोट
Final कीवर्ड का उपयोग प्रॉपर्टीज़ पर PHP 8.1 से पहले नहीं किया जा सकता। मेथड्स और क्लासेज के लिए यह PHP 5 से उपलब्ध है।