← All results

PHPStan strict-rules opt-in detection for empty()

Group: Analyzer directives · Category: extension · File: directives_phpstan_strict_empty.php · Kind: Style / opinionated (no runtime-safety impact)

References: - PHPStan strict-rules disallowed empty - python-typing directives inspiration

Analyzer results

AnalyzerVersionResultDiagnostics
phan 6.0.7Phan 6.0.7 php-ast version 1.1.3 PHP version used to run Phan: 8.5.9 Pass

No diagnostics reported.

phpstan 2.2.8PHPStan - PHP Static Analysis Tool 2.2.8 Pass (strict)
With strict-rules
directives_phpstan_strict_empty.php:22: Construct empty() is not allowed. Use more strict comparison. [identifier=empty.notAllowed]
psalm 6.16.1Psalm 6.16.1@f1f5de594dc76faf8784e02d3dc4716c91c6f6ac
next: 7.0.0-beta19
Pass

No diagnostics reported.

mago 1.46.0mago 1.46.0 Pass

No diagnostics reported.

mir 0.70.1mir 0.70.1 Pass

No diagnostics reported.

phpantom 0.9.0phpantom_lsp 0.9.0 Pass

No diagnostics reported.

intelephense 1.18.5intelephense 1.18.5 Pass

No diagnostics reported.

phpy 0.2.0phpy 0.2.0 Pass

No diagnostics reported.

qodana 262.8665.325Qodana 262.8665.325 Pass

No diagnostics reported.

noverify 0.5.5NoVerify, version 0.5.5: built on: 2025.04.22 14:36:46 OS: r-kuchinskas arm64 Commit: 4774b82f8adc53fbef38f95e97af4b953b4d1529 Fail
directives_phpstan_strict_empty.php:20: param $values miss matched with phpdoc type <<array<int>>> [funcParamTypeMissMatch]
Expectation diff
Line 20: Unexpected errors ["param $values miss matched with phpdoc type <<array<int>>> [funcParamTypeMissMatch]"]
steins 0.1.5steins 0.1.5 (2026-08-12 revision 39b4cc1) Pass

No diagnostics reported.

phpstan-strict 2.2.8PHPStan - PHP Static Analysis Tool 2.2.8 Pass
directives_phpstan_strict_empty.php:22: Construct empty() is not allowed. Use more strict comparison. [identifier=empty.notAllowed]
psalm-next 7.0.0-beta19Psalm 7.0.0-beta19@7e751c06a756fa64dc4c759c09fe4a173afcb433 Pass

No diagnostics reported.

Source

<?php

declare(strict_types=1);

namespace Conformance\Tests\DirectivesPhpstanStrictEmpty;

/**
 * PHPStan strict-rules opt-in detection for empty().
 *
 * References:
 * - PHPStan strict-rules disallowed empty
 * - python-typing directives inspiration
 *
 * @conformance-kind style
 */

/**
 * @param array<int> $values
 */
function hasValues(array $values): bool
{
    return empty($values); // E<phpstan-strict>: strict PHPStan disallows empty()
}