General
- 'final' modifier is redundant, property with private 'set' visibility is implicitly final
Reports a redundant final modifier used for the private(set) property.
- 'n' modifier can be replaced with non-capturing groups
Reports the n PCRE modifier that can be replaced with non-capturing groups in RegExp patterns.
- 'set' visibility can be removed
Reports a set visibility that equals property visibility and can therefore be omitted.
- Argument with name identifier
Reports arguments with name identifiers.
- Argument without name identifier
Reports arguments without name identifiers.
- Array index is immediately rewritten
Reports the write expressions on array indexes which are immediately overwritten before being accessed.
- Backed property with a 'set' hook cannot be accessed by reference
Reports an attempted indirect modification of a hooked property.
- Cannot modify property outside of 'set' visibility scope
Reports a write access attempt to private(set) or protected(set) properties that are made outside of their set visibility scope.
- Cannot write to a virtual property without a setter defined
Reports partial or missing property hook components, i.e., insufficiently defined virtual properties.
- Class can't implement Traversable directly
Reports the classes that are implementing the Traversable interface alone, not as part of Iterator or IteratorAggregate interfaces.
- Class hierarchy checks
Checks the class hierarchy: abstract methods implementation, compatibility of implementing/overriding methods with their declarations in parent classes, and property types redeclarations.
- Class static member accessed via instance
Reports references to static methods and fields via a class instance rather than the class itself.
- Curly brace access syntax usage
Reports the usages of curly brace syntax for accessing array elements and string offsets.
- Deprecated
Reports the usages of deprecated entities.
- Deprecated '${' string interpolation
Reports ${var} and ${expr} interpolations in strings.
- Deprecated 'Serializable' interface usage
Reports the usages of deprecated Serializable interface.
- Deprecated '__autoload()' function declaration
Reports the __autoload() function declarations.
- Deprecated 'assert()' function declaration
Reports the assert() function declarations.
- Deprecated 'implode/join' usage
Reports deprecated usage of the implode and join functions.
- Deprecated Standard Library call
Reports the calls to Standard PHP Library functions that are deprecated starting from PHP 8.1.
- Deprecated cast
Reports deprecated cast expressions: (unset) cast expressions, which are deprecated in PHP 7.2 and later.
- Deprecated partially supported callables
Reports deprecated usage of callables that are supported by call_user_func($callable), but not by $callable().
- Disabled extension stubs
Reports the usages of classes, functions, and constants, for which the stubs for the corresponding PHP interpreter extensions are disabled.
- Doctrine annotation can be replaced with attribute
Suggests replacing Doctrine annotations with attributes.
- Dynamic method called as static
Reports static calls to dynamic class methods.
- Element is not available in configured PHP version
Reports the usages of entities which were introduced in PHP version later than configured one.
- Getter and setter can be replaced with get and set property hooks
Reports a private property with getter and/or setter access methods that can be replaced with a public property with get and/or set property hooks.
- Hooked property cannot be unset
Reports an attempt to call the unset() function on a hooked property.
- Ignored class alias declaration
Reports the class alias declarations that are ignored by the IDE because the actual class declaration with the same FQN exists.
- Implicitly marking parameter as nullable is deprecated
Reports deprecated usage of an implicitly nullable parameter type.
- Incorrect magic method signature
Reports incompatible magic methods signatures.
- Invalid magic method modifiers
Reports the magic methods that are not declared as public or are declared as static.
- Language level
Reports the language features used in source code that are not supported for the selected language level.
- Member reference chain is too long to analyze
Reports method reference chains that are too long for IDE to analyze.
- Method declaration in parent class is incompatible with implemented interface
Reports the methods declarations in parent classes that are incompatible with implemented interfaces.
- Named argument may be unresolved
Reports the named arguments in method calls that might be unresolved depending on a specific class instance within the hierarchy.
- Nested ternary operator usage
Reports nested ternary expressions, which are deprecated starting from PHP 7.4.
- Overriding method/extending class marked as '@final'
Reports override of method or extending of class with @final in the PHPDoc.
- Parameter's name changed during inheritance
Reports the methods' parameters whose names differ from the same parameters defined in parent methods.
- Passing 'E_USER_ERROR' to 'trigger_error()' is deprecated since PHP 8.4
Reports passing a non-empty string as the $enclosure parameter of the CSV-related methods and functions: SplFileObject::setCsvControl() SplFileObject::fputcsv() SplFileObject::fgetcsv() fputcsv() fgetcsv() str_getcsv().
- Passing 'null' or 'false' to 'dba_key_split()' is deprecated since PHP 8.4
Reports passing null or false to dba_key_split(), which is deprecated since PHP 8.4.
- Passing an option of an incorrect type is deprecated since PHP 8.4
Reports passing incorrect data types for options to Hash extension functions, which is deprecated since PHP 8.4.
- Promoted property usage
Reports properties declared through promoted constructor parameters.
- Property can be 'readonly'
Reports the private promoted properties that are never written to.
- Property can be promoted
Reports the properties that can be replaced with promoted versions.
- Property is immediately rewritten
Reports the write expressions on properties which are immediately overwritten before being accessed.
- Raising zero to the power of negative number is deprecated since PHP 8.4
Reports raising zero to the power of a negative number, which is deprecated since PHP 8.4.
- Second write to 'readonly' property
Reports reassignments of readonly properties.
- Static method called as dynamic
Reports dynamic calls to static class methods.
- Symfony annotation can be replaced with attribute
Suggests replacing Symfony annotations with attributes.
- Unpacking arrays with string keys is forbidden for PHP < 8.1
Reports array unpacking with string keys in PHP < 8.1 See Array unpacking with string keys for details.
- Unresolved include
Reports non-resolved include, include_once, require, and require_once expressions.
- Usage of internal entity
Reports the usages of the entities that are marked as @internal and are located in different source roots.
- Using a single underscore '_' as a class name is deprecated since PHP 8.4
Reports usage of a single underscore (_) as a class name, which is deprecated since PHP 8.4.
- Visibility modifier can be removed
Reports a public visibility modifier that may be omitted for a property which has reduced set visibility specified.
- Write access to 'readonly' property outside of declaration scope
Reports the write accesses to readonly properties that are made outside the declaration scope.