Skip to content

Help getArgument/getOption in Symfony Console InputInterface #20

Closed
@Jean85

Description

@Jean85

Symfony had a few recent PRs to the Symfony console that impacted my PHPStan analysis due to PHPDoc changes:

symfony/symfony#28448
symfony/symfony#28374
symfony/symfony#28647

Bottom line:

  • InputInterface::getArgument now returns string|string[]|null
  • InputInterface::getOption returns string|string[]|bool|null.

In reality, they can return string[] only if the relative argument/option is set as InputArgument::IS_ARRAY/InputOption::VALUE_IS_ARRAY.

Is it possible to add an aid in this package for this case? The minimum repro case is this one:

class PhpstanCommand extends \Symfony\Component\Console\Command\Command
{
    protected function configure()
    {
        $this->addArgument('argument', InputArgument::REQUIRED);
        $this->addOption('option', null, InputOption::VALUE_REQUIRED);
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        // Cannot cast array<string>|string|null to string. 
        $argument = (string) $input->getArgument('argument');
        // Cannot cast array<string>|bool|string|null to string. 
        $option = (string) $input->getOption('option');
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedExtra attention is needed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions