在Symfony中从另一个Console命令调用时,如何为VALUE_IS_ARRAY选项传值?
问题描述
我有一个Symfony控制台命令,其选项配置如下:
protected function configure(): void { $this->addOption( 'alias', 'a', InputOption::VALUE_IS_ARRAY | InputOption::VALUE_OPTIONAL, "Add an Apache alias", ); }
在命令行中运行该命令时,操作方式如下:
php my-script my-command --alias=alias1 --alias=alias2 --alias=alias3
我想要从另一个命令中调用此命令,目前我的代码如下:
// ... $myScript = $this->getApplication()->find('my-command'); $myScript->run(ArrayInput([ '--alias' => 'alias1', '--alias' => 'alias2', '--alias' => 'alias3', ]), $output)
显然,由于关联数组仅支持唯一键,这样只会传递一个alias。我该如何重构上述代码以支持数组值?
解决方案
直接将--alias对应的值设置为数组即可,ArrayInput会自动处理这种数组类型的选项,对应命令行中多次传递--alias的行为:
// ... $myScript = $this->getApplication()->find('my-command'); $myScript->run(ArrayInput([ '--alias' => ['alias1', 'alias2', 'alias3'], ]), $output);
这样就能正确传递多个alias值给目标命令,和命令行中多次输入--alias的效果完全一致。
内容的提问来源于stack exchange,提问作者LeonardChallis
相关产品推荐
相关产品推荐

