Как настроить symfony/console для принятия динамического списка параметров? 
  Тем не менее – имена параметров не известны на этапе разработки, поэтому мне нужно приложение, чтобы принять все и разоблачить его, используя стандартный метод $input->getOption . 
Любой шанс можно сделать легко (без взлома компонента в миллионах мест)?
  Мои попытки включали расширение классов ArgvInput и InputDefinition но они не удались из-за разных причин (они объективны и специфичны для реализации symfony/console ).  Вкратце: первый требует, чтобы разбор вызывался несколько раз;  последний – создается в нескольких местах, поэтому я просто не мог найти подходящий способ его ввода. 
Вы можете создать свой собственный ArgvInput, который позволит использовать все параметры.
Например, вы можете увидеть немного измененную версию ArgvInput здесь
У меня только измененные строки: 178
И закомментируйте строки: 188-199
Затем передайте экземпляр вашей версии ArgvInput вместо значения по умолчанию для
 $input = new AcceptAllArgvInput(); $kernel = new AppKernel($env, $debug); $application = new Application($kernel); $application->run($input); 
Я делал это раньше, используя опцию IS_ARRAY. Не будет ли это работать и для вашего экземпляра?
 ->addArgument('routeParams', InputArgument::IS_ARRAY, "Required Placeholders for route"); 
Моим вариантом использования был специальный генератор URL для специальной системы проверки подлинности. Мне нужен способ генерации URL-адресов для тестирования. Естественно, каждый маршрут имеет различное количество требуемых параметров, и я хотел избежать передачи параметров в виде строки CSV.
Примеры команд: Использование: myGenerateToken пользовательский маршрут [variables1] … [variablesN]
  php app/console myGenerateToken 1 productHomePage php app/console myGenerateToken 1 getProduct 1 php app/console myGenerateToken 1 getProductFile 1 changelog 
Переменные были переданы команде «routeParams» в виде массива
  $params = $input->getArgument('routeParams'); var_dump($params); array(2) { [0] => string(1) "1" [1] => string(9) "changelog" } 
  Я заметил, что есть также версия «Option» с именем InputOption::VALUE_IS_ARRAY , но у меня не было успеха, чтобы она работала.  Версия аргумента InputArgument::IS_ARRAY кажется, ведет себя как опция в любом случае, так как она не является ошибкой, если аргументы не указаны. 
РЕДАКТИРОВАТЬ:
На вопрос автора задается вопрос «Как определить параметры командной строки переменной во время выполнения», где мой ответ: «Как вы предоставляете несколько значений для заранее заданного параметра / аргумента»,
Вот как это реализовать на PHP 7+ с помощью symfony / console ^ 3.0:
abstract class CommandWithDynamicOptions extends Command { /** @var array The list of dynamic options passed to the command */ protected $dynamicOptions = []; /** * @inheritdoc */ protected function configure() { $this->setName('custom:command'); $this->setDefinition(new class($this->getDefinition(), $this->dynamicOptions) extends InputDefinition { protected $dynamicOptions = []; public function __construct(InputDefinition $definition, array &$dynamicOptions) { parent::__construct(); $this->setArguments($definition->getArguments()); $this->setOptions($definition->getOptions()); $this->dynamicOptions =& $dynamicOptions; } public function getOption($name) { if (!parent::hasOption($name)) { $this->addOption(new InputOption($name, null, InputOption::VALUE_OPTIONAL)); $this->dynamicOptions[] = $name; } return parent::getOption($name); } public function hasOption($name) { return TRUE; } }); } }какabstract class CommandWithDynamicOptions extends Command { /** @var array The list of dynamic options passed to the command */ protected $dynamicOptions = []; /** * @inheritdoc */ protected function configure() { $this->setName('custom:command'); $this->setDefinition(new class($this->getDefinition(), $this->dynamicOptions) extends InputDefinition { protected $dynamicOptions = []; public function __construct(InputDefinition $definition, array &$dynamicOptions) { parent::__construct(); $this->setArguments($definition->getArguments()); $this->setOptions($definition->getOptions()); $this->dynamicOptions =& $dynamicOptions; } public function getOption($name) { if (!parent::hasOption($name)) { $this->addOption(new InputOption($name, null, InputOption::VALUE_OPTIONAL)); $this->dynamicOptions[] = $name; } return parent::getOption($name); } public function hasOption($name) { return TRUE; } }); } }какabstract class CommandWithDynamicOptions extends Command { /** @var array The list of dynamic options passed to the command */ protected $dynamicOptions = []; /** * @inheritdoc */ protected function configure() { $this->setName('custom:command'); $this->setDefinition(new class($this->getDefinition(), $this->dynamicOptions) extends InputDefinition { protected $dynamicOptions = []; public function __construct(InputDefinition $definition, array &$dynamicOptions) { parent::__construct(); $this->setArguments($definition->getArguments()); $this->setOptions($definition->getOptions()); $this->dynamicOptions =& $dynamicOptions; } public function getOption($name) { if (!parent::hasOption($name)) { $this->addOption(new InputOption($name, null, InputOption::VALUE_OPTIONAL)); $this->dynamicOptions[] = $name; } return parent::getOption($name); } public function hasOption($name) { return TRUE; } }); } }