diff --git a/rules-tests/Symfony73/Rector/Class_/InvokableCommandInputAttributeRector/Fixture/name_from_constant.php.inc b/rules-tests/Symfony73/Rector/Class_/InvokableCommandInputAttributeRector/Fixture/name_from_constant.php.inc index f5a8234b..a50cc5af 100644 --- a/rules-tests/Symfony73/Rector/Class_/InvokableCommandInputAttributeRector/Fixture/name_from_constant.php.inc +++ b/rules-tests/Symfony73/Rector/Class_/InvokableCommandInputAttributeRector/Fixture/name_from_constant.php.inc @@ -55,7 +55,7 @@ class NameFromConstant protected function __invoke(#[\Symfony\Component\Console\Attribute\Argument(name: self::ARGUMENT_NAME, description: 'The name of the person to greet.')] ?string $name, OutputInterface $output): int { - $name = self::ARGUMENT_NAME; + $name = $name; $output->writeln("Hello {$name}!"); return Command::SUCCESS; } diff --git a/rules/Symfony73/Rector/Class_/InvokableCommandInputAttributeRector.php b/rules/Symfony73/Rector/Class_/InvokableCommandInputAttributeRector.php index b2315588..34de837f 100644 --- a/rules/Symfony73/Rector/Class_/InvokableCommandInputAttributeRector.php +++ b/rules/Symfony73/Rector/Class_/InvokableCommandInputAttributeRector.php @@ -18,6 +18,7 @@ use PhpParser\Node\Stmt\Expression; use Rector\Doctrine\NodeAnalyzer\AttributeFinder; use Rector\Exception\ShouldNotHappenException; +use Rector\PhpParser\Node\Value\ValueResolver; use Rector\Rector\AbstractRector; use Rector\Symfony\Enum\CommandMethodName; use Rector\Symfony\Enum\SymfonyAttribute; @@ -40,7 +41,8 @@ final class InvokableCommandInputAttributeRector extends AbstractRector public function __construct( private readonly AttributeFinder $attributeFinder, private readonly CommandArgumentsAndOptionsResolver $commandArgumentsAndOptionsResolver, - private readonly CommandInvokeParamsFactory $commandInvokeParamsFactory + private readonly CommandInvokeParamsFactory $commandInvokeParamsFactory, + private readonly ValueResolver $valueResolver ) { } @@ -237,7 +239,7 @@ private function removeConfigureClassMethod(Class_ $class): void private function replaceInputArgumentOptionFetchWithVariables(ClassMethod $executeClassMethod): void { - $this->traverseNodesWithCallable($executeClassMethod->stmts, function (Node $node): null|Variable|ClassConstFetch|ConstFetch { + $this->traverseNodesWithCallable($executeClassMethod->stmts, function (Node $node): ?Variable { if (! $node instanceof MethodCall) { return null; } @@ -254,7 +256,7 @@ private function replaceInputArgumentOptionFetchWithVariables(ClassMethod $execu ->value; if ($firstArgValue instanceof ClassConstFetch || $firstArgValue instanceof ConstFetch) { - return $firstArgValue; + return new Variable($this->valueResolver->getValue($firstArgValue)); } if (! $firstArgValue instanceof String_) {