Yii2:如何将关联数组作为命令行参数传递?
说明了如何将数组用作命令行参数(通过提供逗号分隔的字符串列表),但这仅适用于一维索引字符串数组:Yii2:如何将关联数组作为命令行参数传递?,yii2,Yii2,说明了如何将数组用作命令行参数(通过提供逗号分隔的字符串列表),但这仅适用于一维索引字符串数组: //命令“yii-example/add-test”将调用“actionAdd(['test'])” //命令“yii-example/addtest1,test2”将调用“actionAdd(['test1','test2'])” 公共函数actionAdd(数组$name){…} 但我如何将多维关联数组作为命令行参数传递,而不依赖于基于json的解决方法呢 至少我希望能够做一些类似于$yii示
//命令“yii-example/add-test”将调用“actionAdd(['test'])”
//命令“yii-example/addtest1,test2”将调用“actionAdd(['test1','test2'])”
公共函数actionAdd(数组$name){…}
但我如何将多维关联数组作为命令行参数传递,而不依赖于基于json的解决方法呢
至少我希望能够做一些类似于
$yii示例/add“foo=bar”
的事情,执行actionAdd(['foo'=>'bar'])
。最后,我还希望能够使用嵌套值(例如,foo.bar=5
被翻译成['foo'=>['bar'=>5]]
)。在\yii\console\Controller::bindActionParams中有这样的代码
$args[$i] = $args[$i] === '' ? [] : preg_split('/\s*,\s*/', $args[$i]);
因此,默认情况下,仅解析逗号分隔的值(非关联)。
您可以根据需要重写此方法
但是regexp对我来说太复杂了。
我建议使用json字符串作为输入,然后执行json_decode()