If tutorials available on this website are helpful for you, please whitelist this website in your ad blocker😭 or Donate to help us ❤️ pay for the web hosting to keep the website running.
PHP programming language में final
एक predefined non-access modifier है जिसका main purpose classes को Inherit करने से बचाना और , methods को ovverride करने से restrict करना है ।
final
keyword का use 3 contexts में किया जाता है -
Methods
Classes
Constants
ध्यान रहे , PHP में classes, methods, और constants (as of PHP 8.1.0) को as final declare किया जा सकता है , properties को आप final declare नहीं कर सकते हैं।
●●●
PHP मे methods को final
declare करने का main purpose किसी sub class द्वारा override करने से बचाना है , मतलब अगर किसी Method को final declare कर दिया तो उसे किसी भी sub class द्वारा override नहीं किया जा सकता है ।
final method declare करने के लिए function
से पहले final
prepend कर दिया जाता है।
<?php
class BaseClass
{
final public function baseclasss_method()
{
echo "BaseClass::baseclasss_method() called";
}
}
class ChildClass extends BaseClass
{
// now override it .
public function baseclasss_method()
{
echo "ChildClass::baseclasss_method() called";
}
}
?>
Output
Fatal error: Cannot override final method BaseClass::baseclasss_method()
Example में आप देख सकते हैं कि final Method को override करने पर fatal error
generate हुई है , हालाँकि यह sense भी बनाता है कि जो method already final है उसे आप modify नहीं कर सकते हैं ।
जैसे real life में अगर किसी चीज को final बनाते है तो इसका सीधा सा मतलब होता है को वो चीज अब change नहीं हो सकती।
●●●
Class को final
declare करने का main purpose classes को Inherit करने से बचाना है , मतलब अगर किसी class को final declare कर दिया तो उसे किसी दूसरी class द्वारा Inherit नहीं किया जा सकता है ।
final class declare करने के लिए class
से पहले final
prepend कर दिया जाता है।
<?php
final class A
{
public function test()
{
echo "method of class A";
}
}
// Inherit class A.
class B extends A {
}
?>
Output
Fatal error: Class B cannot extend final class A
Example में आप देख सकते हैं कि final class को extend करने पर fatal error generate हुई है।
अब अगर आप Access specifier / Class visibility के बारे में जानते हैं तो आपको याद होगा कि methods को private
इसीलिए करते थे ताकि उन्हें class के बाहर से access न किया जा सके और न ही override किया जा सके।
इसलिए private
methods के साथ आप final
use नहीं कर सकते हैं , क्योंकि method already protected है , और किसी sub class द्वारा override भी नहीं किया जा सकता फिर इसे final declare करने का कोई मतलब नहीं है।
और अगर ऐसा करते हैं तो error generate होगी।
<?php
class BaseClass
{
final private function baseclasss_method()
{
echo "BaseClass::baseclasss_method() called";
}
}
?>
Output
PHP Warning: Private methods cannot be final as they are never overridden by other classes
●●●
Class और Method की तरह ही आप किसी class
में constants variables को भी final
declare कर सकते हैं। constant को final define करने के मतलब है कि किसी भी sub class द्वारा उस constant variable की value को change नहीं किया जा सकता है।
<?php
class A
{
final public const X = "A";
}
class B extends A
{
// change constant value.
public const X = "bar";
}
?>
Output
PHP Fatal error: B::X cannot override final constant A::X
ध्यान रहे , PHP में 'final' keyword का use properties को constants बनाने के लिए नहीं किया जाता है , properties को constant बनाने के लिए तो 'const'
keyword का ही use किया जाता है।
●●●
I Hope , अब आप PHP में final keyword के बारे में अच्छे से समझ गए होंगे।