使用 Symfony3 控制台,我如何知道用户提供了一个选项,但没有提供值?而不是根本不提供选项?
例如,采用以下控制台配置。
<?php
class MyCommand extends \Symfony\Component\Console\Command\Command
{
// ...
protected function configure()
{
$this->setName('test')
->setDescription('update an existing operation.')
->addOption(
'option',
null,
InputOption::VALUE_OPTIONAL,
'The ID of the operation to update.'
);
}
}
命令帮助将选项说明为--option[=OPTION]
,因此我可以通过以下方式调用它。
bin/console test
bin/console test --option
bin/console test --option=foo
但是,在前两种情况下,$input->getOption()
将返回 NULL
。我预计在第二种情况下它会返回 TRUE
,或者表明已提供该选项的内容。
所以我不知道如何区分根本没有提供的选项和提供了但没有值的选项。
如果无法区分,InputOption::VALUE_OPTIONAL
的用例是什么?
最佳答案
从 Symfony 3.4 开始,您只需将默认设置为 false
并检查:
- 如果值为
false
,则选项不存在 - 如果值为
null
,则该选项存在但没有值 - 否则它有它的值(value)
例如
$this->addOption('force', null, InputOption::VALUE_OPTIONAL, 'Force something', false);
$force = $input->getOption('force') !== false;
关于php - 如何使用 Symfony 控制台识别是否提供了没有值的选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39406733/