Download the PHP package voku/phpstan-rules without Composer
On this page you can find all versions of the php package voku/phpstan-rules. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download voku/phpstan-rules
More information about voku/phpstan-rules
Files in voku/phpstan-rules
Package phpstan-rules
Short Description Provides additional rules for phpstan/phpstan.
License MIT
Homepage https://github.com/voku/phpstan-rules
Informations about the package phpstan-rules
phpstan-rules
Provides additional rules for phpstan/phpstan
.
Installation
Run
Usage
All the rules provided (and used) by this library are included in rules.neon
.
When you are using phpstan/extension-installer
, rules.neon
will be automatically included.
Otherwise, you need to include rules.neon
in your phpstan.neon
:
Rules
IfConditionHelper
This helper is used by different "condition"-rules: if - and - or - not - ternary
:bulb: We use this "hack" (helper) to run the check for all kind of conditions.
- double negative string conditions. e.g.
(string)$foo != ''
is the same as(string)$foo
- double negative integer conditions. e.g.
(int)$foo != 0
is the same as(int)$foo
- double negative boolean conditions. e.g.
(bool)$foo != false
is the same as(bool)$foo
- double negative null conditions. Use "!==" instead if needed
- check 0 vs '' conditions, the behavior was changed in PHP 8
- check possible insane comparisons. e.g.
0 == '0foo'
, the behavior was changed in PHP 8 - check insane comparisons. e.g.
0 === '0'
orfalse && true
- check non-empty string is never empty
- check non-empty string is always empty
- check non-empty array is never empty
- do not compare objects with another type
- do not use magic string-concat for objects with "__toString()"
- do not allow assignments. e.g.
if ($a = 0)
(see "checkForAssignments") - do not allow Yoda conditions. e.g.
ìf (0 == $a)
(see "checkYodaConditions")
Configuration
If you want to configure a list of classes / subclasses that can NOT be used in conditions directly:
e.g.:
- ok:
if ($emailValueObject->isValid())
- error:
if ($emailValueObject != '')
If you want to check assignments e.g. in "if"-conditions you can use this:
If you want to check Yoda conditions can use this:
ExtendedBinaryOpRule
This rule will check "+", "*", "/", "-", ... (operators) and "." (concatenation) for compatible types.
It's included in the default rules.neon
so that you don't need to add it manually.
DisallowedCallMethodOnNull
This code is copy&pasted from [phpstan/phpstan-src
] and I used it to prevent Call to a member function on null
errors while I wasn't already on level 8 where all kind of "NULL" checks are already covered by default.
e.g.
Support
For support and donations please visit Github | Issues | PayPal | Patreon.
For status updates and release announcements please visit Releases | Twitter | Patreon.
For professional support please contact me.
Thanks
- Thanks to GitHub (Microsoft) for hosting the code and a good infrastructure including Issues-Managment, etc.
- Thanks to IntelliJ as they make the best IDEs for PHP and they gave me an open source license for PhpStorm!
- Thanks to Travis CI for being the most awesome, easiest continous integration tool out there!
- Thanks to StyleCI for the simple but powerfull code style check.
- Thanks to PHPStan && Psalm for relly great Static analysis tools and for discover bugs in the code!