Ambiguous Array Index |
Append And Assign Arrays |
Short Syntax For Arrays |
Float Conversion As Index |
Getting Last Element |
Multiple Index Definition |
Negative Start Index In Array |
No Spread For Hash |
Non-constant Index In Array |
Null Or Boolean Arrays |
Randomly Sorted Arrays |
Slice Arrays First |
Too Many Array Dimensions |
Weak Type With Array |
Missing Attribute Attribute |
Modify Immutable |
Nested Attributes |
Useless Override Attribute |
Abstract Or Implements |
Abstract Static Methods |
Accessing Private |
Access Protected Structures |
Ambiguous Static |
Ambiguous Visibilities |
Anonymous Classes |
Avoid option arrays in constructors |
Avoid Optional Properties |
Can't Extend Final |
Can't Instantiate Class |
Cant Instantiate Non Class |
Can't Overwrite Final Constant |
Check After Null Safe Operator |
Check On __Call Usage |
Checks Property Existence |
Class, Interface, Enum Or Trait With Identical Names |
Clone With Non-Object |
Const Visibility Usage |
Could Be Abstract Class |
Class Could Be Final |
Method Could Be Static |
Could Inject Parameter |
Cyclic References |
Dependant Abstract Classes |
Different Argument Counts |
No Direct Call To Magic Method |
Don't Send $this In Constructor |
Don't Unset Properties |
Empty Classes |
Extends stdClass |
Final Private Methods |
Implicit Nullable Type |
Implements Is For Interface |
Implemented Methods Must Be Public |
Incompatible Signature Methods |
Incompatible Signature Methods With Covariance |
Inherited Property Type Must Match |
Instantiating Abstract Class |
Assign Default To Properties |
Make Global A Property |
Make Magic Concrete |
Method Signature Must Be Compatible |
Mismatch Properties Typehints |
Missing Abstract Method |
Multiple Class Declarations |
Multiple Identical Trait Or Interface |
New Dynamic Class Constant Syntax |
New Object Then Immediate Call |
No Magic Method With Array |
No Null With Null Safe Operator |
self, parent, static Outside Class |
Class Without Parent |
No Public Access |
No Readonly Assignation In Global |
No Self Referencing Constant |
Non Nullable Getters |
Forgotten Visibility |
Non Static Methods Called In A Static |
Old Style Constructor |
Var Keyword |
Parent First |
Parent Is Not Static |
Property Could Be Local |
Same Name For Property And Method |
Never Used Properties |
Property Used In One Method Only |
Parent, Static Or Self Outside Class |
Scalar Or Object Property |
Could Use self |
Should Use Local Class |
Static Methods Cannot Call Non-Static Methods |
Static Methods Can't Contain $this |
Static Methods Called From Object |
Swapped Arguments |
$this Belongs To Classes Or Traits |
$this Is Not An Array |
$this Is Not For Static Methods |
Throw In Destruct |
Too Many Dereferencing |
Too Many Finds |
Too Many Injections |
Typed Class Constants Usage |
Wrong Access Style to Property |
Undefined Classes |
Undefined Class Constants |
Undefined Parent |
Undefined Properties |
Undefined static:: Or self:: |
Undefined ::class |
Unfinished Object |
Unreachable Method |
Unresolved Classes |
Unresolved Instanceof |
Unused Classes |
Unused Class Constant |
Unused Public Methods |
Use ::Class Operator |
Use Instanceof |
Used Once Property |
Useless Abstract Class |
Useless Assignation Of Promoted Property |
Useless Constructor |
Useless Final |
Useless Method |
Using $this Outside A Class |
Weak Typing |
Illegal Name For Method |
Wrong Typed Property Default |
Bad Constants Names |
Case Insensitive Constants |
Use const |
Constant Used Only Once |
Constants Created Outside Its Namespace |
Invalid Constant Name |
Multiple Constant Definition |
Strange Name For Constants |
Undefined Constants |
No Magic Method For Enum |
Undefined Enumcase |
Unused Enumeration Case |
Can't Throw Throwable |
Catch With Undefined Variable |
Converted Exceptions |
Forgotten Thrown |
Multiple Exceptions Catch() |
Overwritten Exceptions |
Throw Functioncall |
Throw Raw Exceptions |
Uncaught Exceptions |
Unthrown Exception |
Useless Try |
ext/apc |
ext/dba |
ext/mcrypt |
ext/mysql |
Inclusion Wrong Case |
Missing Include |
Native Alias Functions Usage |
Use Named Boolean In Argument Definition |
Callback Function Needs Return |
Can't Call Generator |
Cancelled Parameter |
Cannot Use Static For Closure |
Closure Could Be A Callback |
Could Make A Function |
Deep Definitions |
Deprecated Callable |
Don't Collect Void |
Duplicate Named Parameter |
Empty Function |
Fn Argument Variable Confusion |
Hardcoded Passwords |
Insufficient Typehint |
Method Is Not An If |
Mismatch Parameter Name |
Mismatch Type And Default |
Mismatched Default Arguments |
Mismatched Typehint |
Modified Typed Parameter |
Must Return Methods |
Never Called Parameter |
No Boolean As Default |
No Default For Referenced Parameter |
No Literal For Reference |
No Referenced Void |
No Return Used |
Nullable With Constant |
Only Variable For Reference |
Only Variable Passed By Reference |
Redeclared PHP Functions |
Retyped Reference |
Should Use Existing Constants |
Should Yield With Key |
Too Many Local Variables |
Type Must Be Returned |
Class-typed References |
Unbinding Closures |
Undefined Functions |
Unknown Parameter Name |
Unused Parameter |
Unused Inherited Variable In Closure |
Unused Returned Value |
Use Constant As Arguments |
Use Constants As Returns |
Useless Argument |
Useless Referenced Argument |
Useless Return |
Uses Default Values |
Using Deprecated Method |
Void Is Not A Reference |
Methods Without Return |
Wrong Argument Name With PHP Function |
Wrong Argument Type |
Wrong Number Of Arguments |
Wrong Optional Parameter |
Wrong Type Returned |
Wrong Type With Call |
func_get_arg() Modified |
Already Parents Interface |
Can't Implement Traversable |
Cant Overload Constants |
Forgotten Interface |
Empty Interfaces |
Inherited Class Constant Visibility |
Interfaces Is Not Implemented |
Interfaces Don't Ensure Properties |
Repeated Interface |
Undefined Interfaces |
Useless Interfaces |
Fully Qualified Constants |
Empty Namespace |
Hidden Use Expression |
Multiple Alias Definitions Per File |
Multiple Alias Definitions |
No Keyword In Namespace |
Overload Existing Names |
Should Make Alias |
Unresolved Use |
Use With Fully Qualified Name |
array_key_exists() Speedup |
No array_merge() In Loops |
Autoappend |
Avoid array_push() |
Cache Variable Outside Loop |
Scope Resolution Operator |
Count() To Array Append |
fputcsv() In Loops |
Do In Base |
Double array_flip() |
Ellipsis Merge |
Fetch One Row Format |
Isset() On The Whole Array |
Joining file() |
Logical To in_array |
Make One Call With Array |
No mb_substr In Loop |
Memoize MagicCall |
Avoid Concat In Loop |
Avoid glob() Usage |
No Count With 0 |
Optimize Explode() |
Use PHP7 Encapsed Strings |
Always Use Function With array_key_exists() |
Pre-Calculate Use |
Pre-increment |
Regex On Arrays |
Processing Collector |
Should Cache Local |
Simple Switch And Match |
Simplify Foreach |
Skip Empty Array |
Slow Functions |
Static Call May Be Truly Static |
strpos() Too Much |
Substring First |
Substr() In Loops |
Too Many Extractions |
Use array_slice() |
Use The Blind Var |
time() Vs strtotime() |
array_key_exists() Works On Arrays |
Assert Function Is Reserved |
Assign And Lettered Logical Operator Precedence |
Assumptions |
Avoid get_object_vars() |
Avoid mb_dectect_encoding() |
Use random_int() |
Calling Static Trait Method |
Cast Unset Usage |
class_alias() Supports Internal Classes |
Clone Constant |
Nonexistent Variable In compact() |
Concat And Addition |
Constant Scalar Expression |
Crc32() Might Be Negative |
DateTimeImmutable Is Not Immutable |
Dollar Curly Interpolation Is Deprecated |
Deprecated PHP Functions |
Detect Current Class |
Don't Pollute Global Space |
Ellipsis Usage |
Empty List |
Enum Usage |
Exit Without Argument |
False To Array Conversion |
$FILES full_path |
Filter To add_slashes() |
Final Constant |
Wrong fopen() Mode |
Foreach On Object |
Group Use Declaration |
Hash Algorithms |
Hash Algorithms Incompatible With PHP 7.4- |
idn_to_ascii() New Default |
Incompilable Files |
Numeric Literal Separator |
Wrong Parameter Type |
Is_A() With String |
Use === null |
PHP Native Interfaces and Return Type |
List Short Syntax |
List With Keys |
Logical Should Use Symbolic Operators |
Missing __isset() Method |
Possible Missing Subpattern |
Mixed Keyword |
Multiple Declaration Of Strict_types |
Must Call Parent Constructor |
Named Argument And Variadic |
Named Parameter Usage |
PHP Native Class Type Compatibility |
Nested Ternary Without Parenthesis |
Never Keyword |
Never Typehint Usage |
New Initializers |
Do Not Cast To Int |
No Class In Global |
No More Curly Arrays |
No Null For Native PHP Functions |
No Reference For Ternary |
Only Variable Passed By Reference |
Openssl Encrypt Default Algorithm Change |
PHP 8.0 Typehints |
PHP 8.1 Typehints |
Pathinfo() Returns May Vary |
PHP 7.4 Constant Deprecation |
Php 7.4 New Classes |
New Constants In PHP 7.4 |
New Functions In PHP 7.4 |
PHP 7.4 Removed Directives |
PHP 7.4 Removed Functions |
PHP 7.4 Reserved Keyword |
mb_strrpos() Third Argument |
Php7 Relaxed Keyword |
PHP 80 Named Parameter Variadic |
New Functions In PHP 8.0 |
Php 8.0 Only TypeHints |
PHP 8.0 Removed Constants |
PHP 8.0 Removed Directives |
PHP 8.0 Removed Functions |
PHP 8.0 Resources Turned Into Objects |
Union Typehint |
Php 8.0 Variable Syntax Tweaks |
New Functions In PHP 8.1 |
PHP 8.1 New Types |
PHP 8.1 Removed Constants |
PHP 8.1 Removed Directives |
PHP 8.1 Removed Functions |
PHP 8.1 Resources Turned Into Objects |
New Functions In PHP 8.2 |
PHP 8.2 New Types |
$php_errormsg Usage |
$HTTP_RAW_POST_DATA Usage |
Readonly Property Changed By Cloning |
Reflection Export() Is Deprecated |
Reserved Match Keyword |
Restrict Global Usage |
Scalar Are Not Arrays |
Short Open Tags |
Should Use array_column() |
Should Use Coalesce |
Should Use Function |
Signature Trailing Comma |
Static Variable Can Default To Arbitrary Expression |
String Int Comparison |
strpos() With Integers |
Strtr Arguments |
Throw Was An Expression |
Too Many Native Calls |
Trailing Comma In Calls |
Typed Property Usage |
Unknown Pcre2 Option |
Use Enum Case In Constant Expression |
Uses PHP 8 Match() |
Use Nullable Type |
Use PHP Object API |
Use Pathinfo |
Use pathinfo() Arguments |
Should Use SetCookie() |
Avoid Using stdClass |
Utf8 Encode And Decode Are Deprecated |
version_compare Operator |
Wrong Attribute Configuration |
Wrong Type For Native PHP Function |
Old Style __autoload() |
Always Anchor Regex |
Avoid Those Hash Functions |
Compare Hash |
Configure Extract |
Check Crypto Key Length |
Safe Curl Options |
Direct Injection |
Don't Echo Error |
Dynamic Library Loading |
Encoded Simple Letters |
filter_input() As A Source |
Filter Not Raw |
Incompatible Types With Incoming Values |
Indirect Injection |
Insecure Integer Validation |
Keep Files Access Restricted |
Minus One On Error |
Mkdir Default |
move_uploaded_file Instead Of copy |
No ENT_IGNORE |
No Net For Xml Load |
Avoid sleep()/usleep() |
No Weak SSL Crypto |
Register Globals |
Safe HTTP Headers |
Unvalidated Data Cached In Session |
Session Lazy Write |
Set Cookie Safe Arguments |
Should Use Prepared Statement |
Should Use session_regenerateid() |
Sqlite3 Requires Single Quotes |
Unserialize Second Arg |
Upload Filename Injection |
parse_str() Warning |
Adding Zero |
Altering Foreach Without Reference |
Alternative Syntax Consistence |
Comparison Is Always The Same |
Array Access On Literal Array |
Array_Fill() With Objects |
Array_Map() Passes By Value |
array_merge() And Variadic |
Array_merge Needs Array Of Arrays |
Assign And Compare |
Same Variable Foreach |
Bail Out Early |
Strict Comparison With Booleans |
Break Outside Loop |
Buried Assignation |
Cannot Use Append For Reading |
Cast To Boolean |
Casting Ternary |
Catch Overwrite Variable |
Check All Types |
Check Division By Zero |
Check JSON |
Coalesce And Concat |
Coalesce And Ternary Operators Order |
Common Alternatives |
Compared Comparison |
Concat Empty String |
Constant Scalar Expressions |
Continue Is For Loop |
Could Be Else |
Could Be Spaceship |
Could Be A Static Variable |
Could Use __DIR__ |
Could Use Short Assignation |
Could Use str_repeat() |
Could Use Yield From |
Count() Is Not Negative |
curl_version() Has No Argument |
Dangling Array References |
Default Then Discard |
Deprecated Mb_string Encodings |
Dereferencing String And Arrays |
__DIR__ Then Slash |
Don't Add Seconds |
Don't Change The Blind Var |
Don't Mix ++ |
Don't Read And Write In One Expression |
Don't Reuse Foreach Source |
Double Assignation |
Double Checks |
Double Instructions |
Double Object Assignation |
Drop Else After Return |
Echo With Concat |
Else If Versus Elseif |
Empty Blocks |
Empty Json Error |
Empty Instructions |
Empty Loop |
Empty Try Catch |
error_reporting() With Integers |
Eval() Usage |
eval() Without Try |
Exit() Usage |
Failed Substr() Comparison |
Switch Fallthrough |
For Using Functioncall |
Foreach Reference Is Not Modified |
Overwritten Source And Value |
Forgotten Whitespace |
Function Subscripting |
Global Inside Loop |
Global Usage |
Htmlentities Calls |
Htmlentities Using Default Flag |
Identical Case In Switch |
Identical Conditions |
Identical Consecutive Expression |
Identical On Both Sides |
Identical Variables In Foreach |
If With Same Conditions |
Iffectations |
Implicit Conversion To Int |
Implied If |
Implode() Arguments Order |
Indices Are Int Or String |
Infinite Recursion |
Invalid Cast |
Invalid Date Scanning Format |
Invalid Pack Format |
Invalid Regex |
Is Actually Zero |
list() May Omit Variables |
Logical Mistakes |
Lone Blocks |
Long Arguments |
Max Level Of Nesting |
Mbstring Unknown Encodings |
Mbstring Third Arg |
Mbstring Unknown Encoding |
Merge If Then |
Mismatched Ternary Alternatives |
Missing Assignation In Branches |
Missing Cases In Switch |
Maybe Missing New |
Missing Parenthesis |
Misused Yield |
Mixed Concat And Interpolation |
Modernize Empty With Expression |
Multiples Identical Case |
Multiple Type Cases In Switch |
Multiple Type Variable |
Multiply By One |
Negative Power |
Nested Ifthen |
Nested Loops |
Nested Match |
Nested Ternary |
Always Positive Comparison |
Next Month Trap |
No Append On Source |
Avoid array_unique() |
Avoid Large Array Assignation |
Don't Change Incomings |
No Choice |
No Direct Usage |
No Empty Regex |
No Empty String With explode() |
No get_class() With Null |
No Hardcoded Hash |
No Hardcoded Ip |
No Hardcoded Path |
No Hardcoded Port |
No isset() With empty() |
No Max On Empty Array |
No Need For Else |
No Need For Triple Equal |
No Null For Index |
No Object As Index |
No Parenthesis For Language Construct |
No Reference On Left Side |
No Return Or Throw In Finally |
Avoid Substr() One |
No Valid Cast |
Variable Is Not A Condition |
Non Integer Nor String As Index |
@ Operator |
Not Equal Is Not !== |
Not Not |
Objects Don't Need References |
include_once() Usage |
Several Instructions On The Same Line |
Only First Byte |
Only Variable Returned By Reference |
openssl_random_pseudo_byte() Second Argument |
Or Die |
Overwritten Foreach Var |
PHP7 Dirname |
Phpinfo |
Possible Infinite Loop |
Print And Die |
Avoid Parenthesis With Language Construct |
Printf Number Of Arguments |
Queries In Loops |
Random Without Try |
Recalled Condition |
Repeated print() |
Repeated Regex |
Results May Be Missing |
Return True False |
Same Conditions In Condition |
Should Chain Exception |
Should Use Ternary Operator |
Preprocessable |
Should Use Explode Args |
Simplify Regex |
Sprintf Format Compilation |
Static Inclusions |
Static Loop |
strip_tags() Skips Closed Tag |
Strpos()-like Comparison |
Strpos() Less Than One |
Suspicious Comparison |
Switch To Switch |
Switch Without Default |
Ternary In Concat |
Test Then Cast |
Throws An Assignement |
Timestamp Difference |
Unchecked Resources |
Unconditional Break In Loop |
Unkown Regex Options |
Unpreprocessed Values |
Unset In Foreach |
Unsupported Operand Types |
Unsupported Types With Operators |
Unused Global |
Use Constant Instead Of Function |
Avoid get_class() |
Use Positive Condition |
Use Same Types For Comparisons |
Use System Tmp |
Useless Brackets |
Useless Type Casting |
Useless Check |
Useless Coalesce |
Useless Global |
Useless Instructions |
Useless Null Coalesce |
Useless Parenthesis |
Useless Short Ternary |
Useless Switch |
Useless Unset |
var_dump()... Usage |
While(List() = Each()) |
Wrong Locale |
Wrong Precedence In Expression |
Wrong Range Check |
preg_replace With Option e |
__toString() Throws Exception |
Already Parents Trait |
Cannot Call Static Trait Method Directly |
Constants In Traits |
Dependant Trait |
Empty Traits |
Final Traits Are Final |
Method Collision Traits |
No Private Abstract Method In Trait |
Trait Is Not A Type |
Trait Not Found |
Undefined Insteadof |
Undefined Trait |
Useless Method Alias |
Binary Glossary |
Hexadecimal In String |
No Real Comparison |
Invalid Octal In String |
One Variable String |
Should Typecast |
Silently Cast Integer |
String May Hold A Variable |
Strings With Strange Space |
Missing Some Returntype |
StandaloneType True False Null |
Wrong Type With Default |
Assigned Twice |
Constant Typo Looks Like A Variable |
Inherited Static Variable |
Lost References |
Overwritten Literals |
Recycled Variables |
Redeclared Static Variable |
Static Variable Initialisation |
Undefined Constant Name |
Undefined Variable |
Non Ascii Variables |
Used Once Variables |
Used Once Variables (In Scope) |
Written Only Variables |