Backups Created:
/home/japatmex/public_html/wp-content/edit-wolf.php
Savvy
W
olf -
MANAGER
Edit File: IterableInForeachRule.php
<?php declare(strict_types = 1); namespace PHPStan\Rules\Arrays; use PhpParser\Node; use PHPStan\Analyser\Scope; use PHPStan\Rules\RuleError; use PHPStan\Rules\RuleErrorBuilder; use PHPStan\Rules\RuleLevelHelper; use PHPStan\Type\ErrorType; use PHPStan\Type\Type; use PHPStan\Type\VerbosityLevel; class IterableInForeachRule implements \PHPStan\Rules\Rule { /** @var \PHPStan\Rules\RuleLevelHelper */ private $ruleLevelHelper; public function __construct(RuleLevelHelper $ruleLevelHelper) { $this->ruleLevelHelper = $ruleLevelHelper; } public function getNodeType(): string { return \PhpParser\Node\Stmt\Foreach_::class; } /** * @param \PhpParser\Node\Stmt\Foreach_ $node * @param \PHPStan\Analyser\Scope $scope * @return RuleError[] */ public function processNode(Node $node, Scope $scope): array { $typeResult = $this->ruleLevelHelper->findTypeToCheck( $scope, $node->expr, 'Iterating over an object of an unknown class %s.', static function (Type $type): bool { return $type->isIterable()->yes(); } ); $type = $typeResult->getType(); if ($type instanceof ErrorType) { return $typeResult->getUnknownClassErrors(); } if ($type->isIterable()->yes()) { return []; } return [ RuleErrorBuilder::message(sprintf( 'Argument of an invalid type %s supplied for foreach, only iterables are supported.', $type->describe(VerbosityLevel::typeOnly()) ))->line($node->expr->getLine())->build(), ]; } }