Fork me on GitHub
a Sensio Labs Product

Persian Successor (v3.65.0) edition

Rule final_internal_class

Internal classes should be final.

Warning

Using this rule is risky

Changing classes to final might cause code execution to break.

Configuration

annotation_exclude

Warning

This option is deprecated and will be removed in the next major version. Use exclude to configure PHPDoc annotations tags and attributes.

Class level attribute or annotation tags that must be omitted to fix the class, even if all of the white list ones are used as well (case insensitive).

Allowed types: list<string>

Default value: ['@final', '@Entity', '@ORM\\Entity', '@ORM\\Mapping\\Entity', '@Mapping\\Entity', '@Document', '@ODM\\Document']

annotation_include

Warning

This option is deprecated and will be removed in the next major version. Use include to configure PHPDoc annotations tags and attributes.

Class level attribute or annotation tags that must be set in order to fix the class (case insensitive).

Allowed types: list<string>

Default value: ['@internal']

consider_absent_docblock_as_internal_class

Whether classes without any DocBlock should be fixed to final.

Allowed types: bool

Default value: false

exclude

Class level attribute or annotation tags that must be omitted to fix the class, even if all of the white list ones are used as well (case insensitive).

Allowed types: list<string>

Default value: ['final', 'Entity', 'ORM\\Entity', 'ORM\\Mapping\\Entity', 'Mapping\\Entity', 'Document', 'ODM\\Document']

include

Class level attribute or annotation tags that must be set in order to fix the class (case insensitive).

Allowed types: list<string>

Default value: ['internal']

Examples

Example #1

Default configuration.

--- Original
+++ New
 <?php
 /**
  * @internal
  */
-class Sample
+final class Sample
 {
 }

Example #2

With configuration: ['include' => ['@Custom'], 'exclude' => ['@not-fix']].

--- Original
+++ New
 <?php
 /**
  * @CUSTOM
  */
-class A{}
+final class A{}

 /**
  * @CUSTOM
  * @not-fix
  */
 class B{}

Rule sets

The rule is part of the following rule set:

References

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