From a739e1da391f0a27dd0b7921cac3fe4b157dfe42 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Mon, 24 Aug 2026 15:38:58 +0100 Subject: [PATCH 1/4] [Rector] skip DeprecatedInterface rules in PhpUpgradeDowngradeRegisteredInSetRule --- src/Enum/ClassName.php | 2 ++ .../PhpUpgradeDowngradeRegisteredInSetRule.php | 5 +++++ .../Fixture/Php80/SkipDeprecatedRector.php | 16 ++++++++++++++++ ...hpUpgradeDowngradeRegisteredInSetRuleTest.php | 1 + 4 files changed, 24 insertions(+) create mode 100644 tests/Rules/Rector/PhpUpgradeDowngradeRegisteredInSetRule/Fixture/Php80/SkipDeprecatedRector.php diff --git a/src/Enum/ClassName.php b/src/Enum/ClassName.php index 2415778a8..73699d3a3 100644 --- a/src/Enum/ClassName.php +++ b/src/Enum/ClassName.php @@ -14,6 +14,8 @@ final class ClassName public const string CONFIGURABLE_RECTOR = 'Rector\Contract\Rector\ConfigurableRectorInterface'; + public const string DEPRECATED_RECTOR = 'Rector\Configuration\Deprecation\Contract\DeprecatedInterface'; + public const string RECTOR_ATTRIBUTE_KEY = 'Rector\NodeTypeResolver\Node\AttributeKey'; public const string MOCK_OBJECT_CLASS = 'PHPUnit\Framework\MockObject\MockObject'; diff --git a/src/Rules/Rector/PhpUpgradeDowngradeRegisteredInSetRule.php b/src/Rules/Rector/PhpUpgradeDowngradeRegisteredInSetRule.php index a36c91fee..8b423d818 100644 --- a/src/Rules/Rector/PhpUpgradeDowngradeRegisteredInSetRule.php +++ b/src/Rules/Rector/PhpUpgradeDowngradeRegisteredInSetRule.php @@ -115,6 +115,11 @@ private function matchRectorClassName(Scope $scope): ?string return null; } + // deprecated Rector rules are not registered in sets + if ($classReflection->is(ClassName::DEPRECATED_RECTOR)) { + return null; + } + return $classReflection->getName(); } } diff --git a/tests/Rules/Rector/PhpUpgradeDowngradeRegisteredInSetRule/Fixture/Php80/SkipDeprecatedRector.php b/tests/Rules/Rector/PhpUpgradeDowngradeRegisteredInSetRule/Fixture/Php80/SkipDeprecatedRector.php new file mode 100644 index 000000000..86ec5f0a3 --- /dev/null +++ b/tests/Rules/Rector/PhpUpgradeDowngradeRegisteredInSetRule/Fixture/Php80/SkipDeprecatedRector.php @@ -0,0 +1,16 @@ + Date: Mon, 24 Aug 2026 18:02:19 +0100 Subject: [PATCH 2/4] [Rector] also check bare int refactor() return type in NoIntegerRefactorReturnRule, keep REMOVE_NODE allowed --- .../Rector/NoIntegerRefactorReturnRule.php | 43 +++++++++++-------- .../Fixture/AllowBareIntRemoveNode.php | 23 ++++++++++ .../Fixture/BareIntReturn.php | 23 ++++++++++ .../NoIntegerRefactorReturnRuleTest.php | 3 ++ 4 files changed, 74 insertions(+), 18 deletions(-) create mode 100644 tests/Rules/Rector/NoIntegerRefactorReturnRule/Fixture/AllowBareIntRemoveNode.php create mode 100644 tests/Rules/Rector/NoIntegerRefactorReturnRule/Fixture/BareIntReturn.php diff --git a/src/Rules/Rector/NoIntegerRefactorReturnRule.php b/src/Rules/Rector/NoIntegerRefactorReturnRule.php index 90c4f346e..9d5fb6c2e 100644 --- a/src/Rules/Rector/NoIntegerRefactorReturnRule.php +++ b/src/Rules/Rector/NoIntegerRefactorReturnRule.php @@ -46,34 +46,41 @@ public function processNode(Node $node, Scope $scope): array return []; } - if (! $node->returnType instanceof UnionType) { + if (! $this->hasIntReturnType($node->returnType)) { return []; } - foreach ($node->returnType->types as $type) { - if (! $type instanceof Identifier) { - continue; - } + $constantNames = $this->findUsedNodeVisitorConstantNames($node); - if ($type->name !== 'int') { - continue; - } + $undesiredConstantNames = array_diff($constantNames, ['REMOVE_NODE']); + if ($constantNames !== [] && $undesiredConstantNames === []) { + return []; + } - $constantNames = $this->findUsedNodeVisitorConstantNames($node); + $ruleError = RuleErrorBuilder::message(self::ERROR_MESSAGE) + ->identifier(RectorRuleIdentifier::NO_INTEGER_REFACTOR_RETURN) + ->build(); - $undesiredConstantNames = array_diff($constantNames, ['REMOVE_NODE']); - if ($constantNames !== [] && $undesiredConstantNames === []) { - return []; - } + return [$ruleError]; + } - $ruleError = RuleErrorBuilder::message(self::ERROR_MESSAGE) - ->identifier(RectorRuleIdentifier::NO_INTEGER_REFACTOR_RETURN) - ->build(); + private function hasIntReturnType(?Node $returnType): bool + { + // bare "int" return type + if ($returnType instanceof Identifier) { + return $returnType->name === 'int'; + } - return [$ruleError]; + // "int" as one of the union members + if ($returnType instanceof UnionType) { + foreach ($returnType->types as $type) { + if ($type instanceof Identifier && $type->name === 'int') { + return true; + } + } } - return []; + return false; } /** diff --git a/tests/Rules/Rector/NoIntegerRefactorReturnRule/Fixture/AllowBareIntRemoveNode.php b/tests/Rules/Rector/NoIntegerRefactorReturnRule/Fixture/AllowBareIntRemoveNode.php new file mode 100644 index 000000000..363f7e20e --- /dev/null +++ b/tests/Rules/Rector/NoIntegerRefactorReturnRule/Fixture/AllowBareIntRemoveNode.php @@ -0,0 +1,23 @@ + Date: Mon, 24 Aug 2026 19:23:04 +0100 Subject: [PATCH 3/4] [rector] apply param/variable rename --- src/Rules/Rector/NoIntegerRefactorReturnRule.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Rules/Rector/NoIntegerRefactorReturnRule.php b/src/Rules/Rector/NoIntegerRefactorReturnRule.php index 9d5fb6c2e..e1d9f5dad 100644 --- a/src/Rules/Rector/NoIntegerRefactorReturnRule.php +++ b/src/Rules/Rector/NoIntegerRefactorReturnRule.php @@ -57,23 +57,23 @@ public function processNode(Node $node, Scope $scope): array return []; } - $ruleError = RuleErrorBuilder::message(self::ERROR_MESSAGE) + $identifierRuleError = RuleErrorBuilder::message(self::ERROR_MESSAGE) ->identifier(RectorRuleIdentifier::NO_INTEGER_REFACTOR_RETURN) ->build(); - return [$ruleError]; + return [$identifierRuleError]; } - private function hasIntReturnType(?Node $returnType): bool + private function hasIntReturnType(?Node $node): bool { // bare "int" return type - if ($returnType instanceof Identifier) { - return $returnType->name === 'int'; + if ($node instanceof Identifier) { + return $node->name === 'int'; } // "int" as one of the union members - if ($returnType instanceof UnionType) { - foreach ($returnType->types as $type) { + if ($node instanceof UnionType) { + foreach ($node->types as $type) { if ($type instanceof Identifier && $type->name === 'int') { return true; } From ddd05c15bf1b4f22d770b43c4508f1d75bbc8ae6 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Mon, 24 Aug 2026 19:29:48 +0100 Subject: [PATCH 4/4] [ci] apply rector + coding standard on latest deps --- src/Doctrine/DoctrineEntityDocumentAnalyser.php | 4 +++- src/NodeAnalyzer/AttributeFinder.php | 6 +++--- src/NodeAnalyzer/EnumAnalyzer.php | 1 - src/NodeTraverser/SimpleCallableNodeTraverser.php | 2 +- src/Rules/ClassNameRespectsParentSuffixRule.php | 6 +++--- src/Rules/Complexity/NoJustPropertyAssignRule.php | 3 ++- .../NoGetRepositoryOnServiceRepositoryEntityRule.php | 3 ++- src/Rules/ForbiddenNodeRule.php | 6 +++--- src/Rules/PreferredClassRule.php | 1 - .../Rector/NoClassReflectionStaticReflectionRule.php | 3 ++- src/Rules/Rector/NoInstanceOfStaticReflectionRule.php | 3 ++- src/Rules/Rector/NoLeadingBackslashInNameRule.php | 3 ++- .../ConfigClosure/NoDuplicateArgAutowireByTypeRule.php | 3 ++- .../ConfigClosure/NoDuplicateArgsAutowireByTypeRule.php | 3 ++- .../ConfigClosure/NoServiceSameNameSetClassRule.php | 6 ++++-- .../ServicesExcludedDirectoryMustExistRule.php | 3 ++- src/Rules/Symfony/NoRoutingPrefixRule.php | 3 ++- .../SymfonyClosureServicesExcludeResolver.php | 3 ++- .../ConfigClosure/SymfonyClosureServicesLoadResolver.php | 3 ++- .../SymfonyClosureServicesSetClassesResolver.php | 3 ++- src/Symfony/NodeAnalyzer/SymfonyControllerAnalyzer.php | 2 +- .../NodeFinder/RepeatedServiceAdderCallNameFinder.php | 9 ++++++--- src/Symfony/Reflection/ClassConstructorTypesResolver.php | 3 ++- 23 files changed, 50 insertions(+), 32 deletions(-) diff --git a/src/Doctrine/DoctrineEntityDocumentAnalyser.php b/src/Doctrine/DoctrineEntityDocumentAnalyser.php index dfd8298ad..c96916897 100644 --- a/src/Doctrine/DoctrineEntityDocumentAnalyser.php +++ b/src/Doctrine/DoctrineEntityDocumentAnalyser.php @@ -4,6 +4,8 @@ namespace Symplify\PHPStanRules\Doctrine; +use PHPStan\BetterReflection\Reflection\Adapter\FakeReflectionAttribute; +use PHPStan\BetterReflection\Reflection\Adapter\ReflectionAttribute; use PHPStan\PhpDoc\ResolvedPhpDocBlock; use PHPStan\Reflection\ClassReflection; @@ -43,7 +45,7 @@ private static function hasEntityAttribute(ClassReflection $classReflection): bo return array_any( $attributeReflections, - static fn ($reflectionAttribute): bool => in_array( + static fn (ReflectionAttribute|FakeReflectionAttribute $reflectionAttribute): bool => in_array( $reflectionAttribute->getName(), self::ENTITY_ATTRIBUTES, true diff --git a/src/NodeAnalyzer/AttributeFinder.php b/src/NodeAnalyzer/AttributeFinder.php index ed0ebebfb..60ec563bc 100644 --- a/src/NodeAnalyzer/AttributeFinder.php +++ b/src/NodeAnalyzer/AttributeFinder.php @@ -13,7 +13,7 @@ final class AttributeFinder { - public function hasAttribute(ClassLike | ClassMethod | Property | Param $node, string $desiredAttributeClass): bool + public function hasAttribute(ClassLike|ClassMethod|Property|Param $node, string $desiredAttributeClass): bool { return (bool) $this->findAttribute($node, $desiredAttributeClass); } @@ -21,7 +21,7 @@ public function hasAttribute(ClassLike | ClassMethod | Property | Param $node, s /** * @return Attribute[] */ - private function findAttributes(ClassMethod | Property | ClassLike | Param $node): array + private function findAttributes(ClassMethod|Property|ClassLike|Param $node): array { $attributes = []; @@ -33,7 +33,7 @@ private function findAttributes(ClassMethod | Property | ClassLike | Param $node } private function findAttribute( - ClassMethod | Property | ClassLike | Param $node, + ClassMethod|Property|ClassLike|Param $node, string $desiredAttributeClass ): ?Attribute { $attributes = $this->findAttributes($node); diff --git a/src/NodeAnalyzer/EnumAnalyzer.php b/src/NodeAnalyzer/EnumAnalyzer.php index ae4d6c03c..7429dd883 100644 --- a/src/NodeAnalyzer/EnumAnalyzer.php +++ b/src/NodeAnalyzer/EnumAnalyzer.php @@ -4,7 +4,6 @@ namespace Symplify\PHPStanRules\NodeAnalyzer; -use MyCLabs\Enum\Enum; use PhpParser\Node\Stmt\Class_; use PhpParser\Node\Stmt\ClassLike; use PHPStan\Analyser\Scope; diff --git a/src/NodeTraverser/SimpleCallableNodeTraverser.php b/src/NodeTraverser/SimpleCallableNodeTraverser.php index 7bc87b630..b692939a3 100644 --- a/src/NodeTraverser/SimpleCallableNodeTraverser.php +++ b/src/NodeTraverser/SimpleCallableNodeTraverser.php @@ -17,7 +17,7 @@ final class SimpleCallableNodeTraverser * @param callable(Node $node): (int|Node|null) $callable * @param Node|Node[]|null $nodes */ - public function traverseNodesWithCallable(Node | array | null $nodes, callable $callable): void + public function traverseNodesWithCallable(Node|array|null $nodes, callable $callable): void { if ($nodes === null) { return; diff --git a/src/Rules/ClassNameRespectsParentSuffixRule.php b/src/Rules/ClassNameRespectsParentSuffixRule.php index b2d54853c..ae61031f4 100644 --- a/src/Rules/ClassNameRespectsParentSuffixRule.php +++ b/src/Rules/ClassNameRespectsParentSuffixRule.php @@ -23,7 +23,7 @@ * @implements Rule * @see \Symplify\PHPStanRules\Tests\Rules\ClassNameRespectsParentSuffixRule\ClassNameRespectsParentSuffixRuleTest */ -final class ClassNameRespectsParentSuffixRule implements Rule +final readonly class ClassNameRespectsParentSuffixRule implements Rule { public const string ERROR_MESSAGE = 'Class should have suffix "%s" to respect parent type'; @@ -45,13 +45,13 @@ final class ClassNameRespectsParentSuffixRule implements Rule /** * @var string[] */ - private array $parentClasses = []; + private array $parentClasses; /** * @param class-string[] $parentClasses */ public function __construct( - private readonly ClassToSuffixResolver $classToSuffixResolver, + private ClassToSuffixResolver $classToSuffixResolver, array $parentClasses = [], ) { $this->parentClasses = array_merge($parentClasses, self::DEFAULT_PARENT_CLASSES); diff --git a/src/Rules/Complexity/NoJustPropertyAssignRule.php b/src/Rules/Complexity/NoJustPropertyAssignRule.php index 66aaac4de..4afc1800d 100644 --- a/src/Rules/Complexity/NoJustPropertyAssignRule.php +++ b/src/Rules/Complexity/NoJustPropertyAssignRule.php @@ -124,7 +124,8 @@ private function isLocalPropertyFetchAssignToVariable(Assign $assign, Scope $sco } $exprType = $scope->getType($assign->expr); - return $exprType->isObject()->yes(); + return $exprType->isObject() + ->yes(); } private function shouldSkipCurrentClass(Scope $scope): bool diff --git a/src/Rules/Doctrine/NoGetRepositoryOnServiceRepositoryEntityRule.php b/src/Rules/Doctrine/NoGetRepositoryOnServiceRepositoryEntityRule.php index 31db3badd..c76ebdc17 100644 --- a/src/Rules/Doctrine/NoGetRepositoryOnServiceRepositoryEntityRule.php +++ b/src/Rules/Doctrine/NoGetRepositoryOnServiceRepositoryEntityRule.php @@ -110,7 +110,8 @@ private function resolveEntityClass(MethodCall $methodCall, Scope $scope): ?stri return null; } - $firstArgument = $methodCall->getArgs()[0]->value; + $firstArgument = $methodCall->getArgs()[0] + ->value; $entityClassType = $scope->getType($firstArgument); if (! $entityClassType instanceof ConstantStringType) { diff --git a/src/Rules/ForbiddenNodeRule.php b/src/Rules/ForbiddenNodeRule.php index 11ed1fae1..a1cac3c4d 100644 --- a/src/Rules/ForbiddenNodeRule.php +++ b/src/Rules/ForbiddenNodeRule.php @@ -18,16 +18,16 @@ * @see \Symplify\PHPStanRules\Tests\Rules\ForbiddenNodeRule\ForbiddenNodeRuleTest * @implements Rule */ -final class ForbiddenNodeRule implements Rule +final readonly class ForbiddenNodeRule implements Rule { public const string ERROR_MESSAGE = '"%s" is forbidden to use'; /** * @var array> */ - private array $forbiddenNodes = []; + private array $forbiddenNodes; - private readonly Standard $standard; + private Standard $standard; /** * @param array> $forbiddenNodes diff --git a/src/Rules/PreferredClassRule.php b/src/Rules/PreferredClassRule.php index 3b8654698..ed3327f89 100644 --- a/src/Rules/PreferredClassRule.php +++ b/src/Rules/PreferredClassRule.php @@ -10,7 +10,6 @@ use PhpParser\Node\Expr\New_; use PhpParser\Node\Expr\StaticCall; use PhpParser\Node\Name; -use PhpParser\Node\Param; use PHPStan\Analyser\Scope; use PHPStan\Node\InClassNode; use PHPStan\Reflection\ClassReflection; diff --git a/src/Rules/Rector/NoClassReflectionStaticReflectionRule.php b/src/Rules/Rector/NoClassReflectionStaticReflectionRule.php index 41782cc20..f07d7196a 100644 --- a/src/Rules/Rector/NoClassReflectionStaticReflectionRule.php +++ b/src/Rules/Rector/NoClassReflectionStaticReflectionRule.php @@ -45,7 +45,8 @@ public function processNode(Node $node, Scope $scope): array return []; } - $argValue = $node->getArgs()[0]->value; + $argValue = $node->getArgs()[0] + ->value; $exprStaticType = $scope->getType($argValue); if (RectorAllowedAutoloadedTypeAnalyzer::isAllowedType($exprStaticType)) { diff --git a/src/Rules/Rector/NoInstanceOfStaticReflectionRule.php b/src/Rules/Rector/NoInstanceOfStaticReflectionRule.php index 7f06c546b..9ed6a35d2 100644 --- a/src/Rules/Rector/NoInstanceOfStaticReflectionRule.php +++ b/src/Rules/Rector/NoInstanceOfStaticReflectionRule.php @@ -67,7 +67,8 @@ private function resolveExprStaticType(FuncCall|Instanceof_ $node, Scope $scope) return null; } - $typeArgValue = $node->getArgs()[1]->value; + $typeArgValue = $node->getArgs()[1] + ->value; return $scope->getType($typeArgValue); } diff --git a/src/Rules/Rector/NoLeadingBackslashInNameRule.php b/src/Rules/Rector/NoLeadingBackslashInNameRule.php index c8e653271..ffb467a3f 100644 --- a/src/Rules/Rector/NoLeadingBackslashInNameRule.php +++ b/src/Rules/Rector/NoLeadingBackslashInNameRule.php @@ -47,7 +47,8 @@ public function processNode(Node $node, Scope $scope): array return []; } - $argValue = $node->getArgs()[0]->value; + $argValue = $node->getArgs()[0] + ->value; $argType = $scope->getType($argValue); if (! $argType instanceof ConstantStringType) { diff --git a/src/Rules/Symfony/ConfigClosure/NoDuplicateArgAutowireByTypeRule.php b/src/Rules/Symfony/ConfigClosure/NoDuplicateArgAutowireByTypeRule.php index ede969733..7420233d1 100644 --- a/src/Rules/Symfony/ConfigClosure/NoDuplicateArgAutowireByTypeRule.php +++ b/src/Rules/Symfony/ConfigClosure/NoDuplicateArgAutowireByTypeRule.php @@ -86,7 +86,8 @@ public function processNode(Node $node, Scope $scope): array // 1. compare referenced type and constructor type $classArgumentNamesToTypes = $this->classConstructorTypesResolver->resolveClassConstructorNamesToTypes($node); - $referenceExpr = $referenceFuncCall->getArgs()[0]->value; + $referenceExpr = $referenceFuncCall->getArgs()[0] + ->value; if (isset($classArgumentNamesToTypes[$currentArgumentName])) { $constructorType = $classArgumentNamesToTypes[$currentArgumentName]; diff --git a/src/Rules/Symfony/ConfigClosure/NoDuplicateArgsAutowireByTypeRule.php b/src/Rules/Symfony/ConfigClosure/NoDuplicateArgsAutowireByTypeRule.php index 72f42f3c1..6f9d237c9 100644 --- a/src/Rules/Symfony/ConfigClosure/NoDuplicateArgsAutowireByTypeRule.php +++ b/src/Rules/Symfony/ConfigClosure/NoDuplicateArgsAutowireByTypeRule.php @@ -84,7 +84,8 @@ public function processNode(Node $node, Scope $scope): array } $referenceFuncCall = $arrayItem->value; - $referenceExpr = $referenceFuncCall->getArgs()[0]->value; + $referenceExpr = $referenceFuncCall->getArgs()[0] + ->value; if (! $referenceExpr instanceof ClassConstFetch) { continue; diff --git a/src/Rules/Symfony/ConfigClosure/NoServiceSameNameSetClassRule.php b/src/Rules/Symfony/ConfigClosure/NoServiceSameNameSetClassRule.php index e211be172..9c592ff49 100644 --- a/src/Rules/Symfony/ConfigClosure/NoServiceSameNameSetClassRule.php +++ b/src/Rules/Symfony/ConfigClosure/NoServiceSameNameSetClassRule.php @@ -98,8 +98,10 @@ private function matchTwoArgsOfSameClassConstName(MethodCall $methodCall): ?stri return null; } - $serviceName = $methodCall->getArgs()[0]->value; - $serviceType = $methodCall->getArgs()[1]->value; + $serviceName = $methodCall->getArgs()[0] + ->value; + $serviceType = $methodCall->getArgs()[1] + ->value; if (! $serviceName instanceof ClassConstFetch) { return null; diff --git a/src/Rules/Symfony/ConfigClosure/ServicesExcludedDirectoryMustExistRule.php b/src/Rules/Symfony/ConfigClosure/ServicesExcludedDirectoryMustExistRule.php index b42bb8986..0cc75bcea 100644 --- a/src/Rules/Symfony/ConfigClosure/ServicesExcludedDirectoryMustExistRule.php +++ b/src/Rules/Symfony/ConfigClosure/ServicesExcludedDirectoryMustExistRule.php @@ -53,7 +53,8 @@ public function processNode(Node $node, Scope $scope): array foreach ($excludeMethodCalls as $excludeMethodCall) { // check all array args - $firstArgValue = $excludeMethodCall->getArgs()[0]->value; + $firstArgValue = $excludeMethodCall->getArgs()[0] + ->value; if (! $firstArgValue instanceof Array_) { continue; } diff --git a/src/Rules/Symfony/NoRoutingPrefixRule.php b/src/Rules/Symfony/NoRoutingPrefixRule.php index d7645f6cb..4930bcac1 100644 --- a/src/Rules/Symfony/NoRoutingPrefixRule.php +++ b/src/Rules/Symfony/NoRoutingPrefixRule.php @@ -73,7 +73,8 @@ private function isAllowedExternalBundleImport(MethodCall $methodCall): bool return false; } - $importArgPath = $parentCaller->getArgs()[0]->value; + $importArgPath = $parentCaller->getArgs()[0] + ->value; if (! $importArgPath instanceof String_) { return false; } diff --git a/src/Symfony/ConfigClosure/SymfonyClosureServicesExcludeResolver.php b/src/Symfony/ConfigClosure/SymfonyClosureServicesExcludeResolver.php index 85fdde204..ebe147c5b 100644 --- a/src/Symfony/ConfigClosure/SymfonyClosureServicesExcludeResolver.php +++ b/src/Symfony/ConfigClosure/SymfonyClosureServicesExcludeResolver.php @@ -40,7 +40,8 @@ public static function resolve(Closure $closure, Scope $scope): array return false; } - $excludedExpr = $node->getArgs()[0]->value; + $excludedExpr = $node->getArgs()[0] + ->value; if (! $excludedExpr instanceof Array_) { return false; } diff --git a/src/Symfony/ConfigClosure/SymfonyClosureServicesLoadResolver.php b/src/Symfony/ConfigClosure/SymfonyClosureServicesLoadResolver.php index d91a85679..8d40e6e9e 100644 --- a/src/Symfony/ConfigClosure/SymfonyClosureServicesLoadResolver.php +++ b/src/Symfony/ConfigClosure/SymfonyClosureServicesLoadResolver.php @@ -36,7 +36,8 @@ public static function resolve(Closure $closure): array return false; } - $namespaceExpr = $node->getArgs()[0]->value; + $namespaceExpr = $node->getArgs()[0] + ->value; if (! $namespaceExpr instanceof String_) { return false; } diff --git a/src/Symfony/ConfigClosure/SymfonyClosureServicesSetClassesResolver.php b/src/Symfony/ConfigClosure/SymfonyClosureServicesSetClassesResolver.php index 09b632b34..59ab5b83a 100644 --- a/src/Symfony/ConfigClosure/SymfonyClosureServicesSetClassesResolver.php +++ b/src/Symfony/ConfigClosure/SymfonyClosureServicesSetClassesResolver.php @@ -52,7 +52,8 @@ public static function resolve(Closure $closure): array return false; } - $setServiceExpr = $methodCall->getArgs()[0]->value; + $setServiceExpr = $methodCall->getArgs()[0] + ->value; if (! $setServiceExpr instanceof ClassConstFetch) { return false; } diff --git a/src/Symfony/NodeAnalyzer/SymfonyControllerAnalyzer.php b/src/Symfony/NodeAnalyzer/SymfonyControllerAnalyzer.php index 49640a017..a7500eeec 100644 --- a/src/Symfony/NodeAnalyzer/SymfonyControllerAnalyzer.php +++ b/src/Symfony/NodeAnalyzer/SymfonyControllerAnalyzer.php @@ -36,7 +36,7 @@ public static function isControllerActionMethod(ClassMethod $classMethod): bool return self::hasRouteAnnotationOrAttribute($classMethod); } - public static function hasRouteAnnotationOrAttribute(ClassLike | ClassMethod $node): bool + public static function hasRouteAnnotationOrAttribute(ClassLike|ClassMethod $node): bool { if ($node instanceof ClassMethod && ! $node->isPublic()) { return false; diff --git a/src/Symfony/NodeFinder/RepeatedServiceAdderCallNameFinder.php b/src/Symfony/NodeFinder/RepeatedServiceAdderCallNameFinder.php index ddd7e9484..4352edd19 100644 --- a/src/Symfony/NodeFinder/RepeatedServiceAdderCallNameFinder.php +++ b/src/Symfony/NodeFinder/RepeatedServiceAdderCallNameFinder.php @@ -25,11 +25,13 @@ public static function find(MethodCall $methodCall): ?string foreach ($callMethodCalls as $callMethodCall) { /** @var String_ $calledMethodNameExpr */ - $calledMethodNameExpr = $callMethodCall->getArgs()[0]->value; + $calledMethodNameExpr = $callMethodCall->getArgs()[0] + ->value; $callMethodName = $calledMethodNameExpr->value; // is passing a service references? - $passedExpr = $callMethodCall->getArgs()[1]->value; + $passedExpr = $callMethodCall->getArgs()[1] + ->value; if (! $passedExpr instanceof Array_) { continue; } @@ -79,7 +81,8 @@ private static function findCallMethodCalls(MethodCall $methodCall): array return false; } - $callNameExpr = $node->getArgs()[0]->value; + $callNameExpr = $node->getArgs()[0] + ->value; return $callNameExpr instanceof String_; }); diff --git a/src/Symfony/Reflection/ClassConstructorTypesResolver.php b/src/Symfony/Reflection/ClassConstructorTypesResolver.php index d0ca31300..65e6a9c7e 100644 --- a/src/Symfony/Reflection/ClassConstructorTypesResolver.php +++ b/src/Symfony/Reflection/ClassConstructorTypesResolver.php @@ -62,7 +62,8 @@ private function resolveClassNameFromServicesSetMethodCall(MethodCall $methodCal continue; } - $serviceClassOrName = $currentMethodCall->getArgs()[0]->value; + $serviceClassOrName = $currentMethodCall->getArgs()[0] + ->value; if ($serviceClassOrName instanceof ClassConstFetch) { return NamingHelper::getName($serviceClassOrName->class); }