Fork me on GitHub
a Sensio Labs Product

15 Keys Accelerate (v3.54.0) edition

Rule final_public_method_for_abstract_class

All public methods of abstract classes should be final.

Description

Enforce API encapsulation in an inheritance architecture. If you want to override a method, use the Template method pattern.

Warning

Using this rule is risky

Risky when overriding public methods of abstract classes.

Examples

Example #1

--- Original
+++ New
 <?php

 abstract class AbstractMachine
 {
-    public function start()
+    final public function start()
     {}
 }

References

The test class defines officially supported behaviour. Each test case is a part of our backward compatibility promise.