Error Identifier: if.condNotBoolean
Every error reported by PHPStan has an error identifier. Here’s a list of all error identifiers. In PHPStan Pro you can see the error identifier next to each error and filter errors by their identifiers.
Code example #
<?php declare(strict_types = 1);
function greet(string $name): string
{
if ($name) { // error: Only booleans are allowed in an if condition, string given.
return "Hello, $name!";
}
return 'Hello, stranger!';
}
This rule is provided by the package phpstan/phpstan-strict-rules.
Why is it reported? #
PHP performs implicit type coercion when evaluating conditions. Values like 0, '', '0', [], and null are considered falsy. This implicit coercion can mask bugs – for example, the string '0' is falsy, which may not be the intended behaviour.
Requiring explicit boolean expressions makes the code’s intent clearer and avoids subtle errors from truthy/falsy coercion.
How to fix it #
Use an explicit comparison that returns a boolean:
<?php declare(strict_types = 1);
function greet(string $name): string
{
- if ($name) {
+ if ($name !== '') {
return "Hello, $name!";
}
return 'Hello, stranger!';
}
For nullable types, compare against null explicitly:
<?php declare(strict_types = 1);
function process(?array $items): int
{
if ($items !== null) {
return count($items);
}
return 0;
}
How to ignore this error #
You can use the identifier if.condNotBoolean to ignore this error using a comment:
// @phpstan-ignore if.condNotBoolean
codeThatProducesTheError();
You can also use only the identifier key to ignore all errors of the same type in your configuration file in the ignoreErrors parameter:
parameters:
ignoreErrors:
-
identifier: if.condNotBoolean
Rules that report this error #
- PHPStan\Rules\BooleansInConditions\BooleanInIfConditionRule [1] phpstan/phpstan-strict-rules