1.2.461. Final Traits Are Final¶
A final method in a trait is also final when in its importing class. This means that the importing class may redefine it, but not the children.
<?php
trait t {
final function FFinal() {}
final function FNotFinalInClass() {}
function FNotFinal() {} // This is a normal method
}
class x {
use t;
function FNotFinalInClass() {}
}
class y extends x {
function FFinal() {} // This is KO, as it is final in the trait
function FNotFinalInClass() {} // This is OK, the class as priority
function FNotFinal() {}
}
?>
1.2.461.1. Specs¶
Short name |
Traits/FinalTraitsAreFinal |
Rulesets |
All, CompatibilityPHP53, CompatibilityPHP54, CompatibilityPHP55, CompatibilityPHP56, CompatibilityPHP70, CompatibilityPHP71, CompatibilityPHP72, CompatibilityPHP73, CompatibilityPHP74, CompatibilityPHP80, CompatibilityPHP81, CompatibilityPHP82 |
Exakat since |
2.5.3 |
PHP Version |
With PHP 8.3 and older |
Severity |
Minor |
Time To Fix |
Quick (30 mins) |
Precision |
High |
Available in |