You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 19:51:02