Register a custom PHPStan rule without a third-party extension
Snippet·
// In phpstan.neon:
// rules:
// - AppTestsPHPStanNoDirectEnvAccessRule
namespace AppTestsPHPStan;
use PhpParserNode;
use PhpParserNodeExprFuncCall;
use PHPStanAnalyserScope;
use PHPStanRulesRule;
final class NoDirectEnvAccessRule implements Rule
{
public function getNodeType(): string { return FuncCall::class; }
public function processNode(Node $node, Scope $scope): array
{
if ($node->name instanceof NodeName && $node->name->toString() === 'env') {
return ['Direct call to env() detected. Use config() in application code.'];
}
return [];
}
}