Ответ 1
Возможно:
->addOption('arg', 'a', InputOption::VALUE_NONE)
- my: command = >
$input->getOption('arg') //false
- my: command -arg = >
$input->getOption('arg') //true
- my: command --arg = 5 = >
$input->getOption('arg') //5
Я хочу создать один параметр с именем аргумент/для команды symfony. И хотите, чтобы symfony отличал эти 3 варианта:
my:command
, что означает что-то вроде my:command --arg=null
my:command --arg
, что означает my:command --arg=defalutValue
my:command --arg=someValue
, который полностью явный.т.е. Я хочу два режима работы для кода под этой командой: по умолчанию один и не по умолчанию с дополнительным аргументом, и этот аргумент должен иметь значение по умолчанию.
Я понимаю, что я могу создать 2 аргумента, но я ищу решение one-arg-to-rule-them-all.
Можно ли выполнить это со встроенными классами или создать пользовательские? Если решение доступно только с пользовательскими классами, скажите мне, с чего начать (т.е. "Создать подкласс..." или "установить пакет с именем..." ), потому что я не знаком с архитектурой Symfony2.
Возможно:
->addOption('arg', 'a', InputOption::VALUE_NONE)
$input->getOption('arg') //false
$input->getOption('arg') //true
$input->getOption('arg') //5
Ответ corvax неверен и не работает. На сегодняшний день вы просто не можете этого достичь.
Это даже указано в документации консоли: Использование параметров команды.
См. также эти проблемы в GitHub:
Symfony2 имеет консольный компонент, который можно использовать отдельно. Здесь вы можете увидеть документацию здесь. В качестве дополнительного примера вы можете проверить реализации в SensioGeneratorBundle.