No Useless Final

July 2, 2015 ยท View on GitHub

final modifier may be applied to class and to function in a class. When final is applied to a class, there is no need to apply it again to this class' methods, as they all will be final : the class itself cannot be extended.

<?php

final class foo {
    final function bar() {}
}

class foofoo extends foo {
	/* other definitions */
}

// generate error : PHP Fatal error:  Class foofoo may not inherit from final class (bar)

?>

It is recommended to avoid using extra final modifier.

Rule Details

The following patterns are considered warnings:

<?php

final class foo {
    final function bar() {}
}

?>

The following patterns are considered legit :

<?php

class foo {
    final public function bar() {}
    // more methods
}

final class foo {
    public function bar() {} // automatically final
    // more methods
}

?>

Further Reading