在CakePHP shell中,我需要使用无限数量的参数。例如:
cake MyShell mycommand inputFile inputFile2 inputFileN outputFile
就我而言,我确信至少应该有2个参数(inputFile
和outputFile
),所以第一个和最后一个,但我不知道是否有介于两者之间的其他人。
所以,在我的getOptionParser()
我有:
$parser->addSubcommand('mycommand', array(
'help' => __('This is my example command'),
'parser' => array(
'arguments' => array(
'inputFile' => array('help' => __('First input file'), 'required' => TRUE),
'outputFile' => array('help' => __('Output file'), 'required' => TRUE)
)
)
));
现在,正如你可以想象的那样,这只有在我使用两个参数且只有两个参数时才有效
我知道我无法使用getOptionParser()
并手动检查$this->args
,但我想知道是否有更好的解决方案。
感谢。
答案 0 :(得分:2)
但我想知道是否有更好的解决方案。
其他shell工具允许您以这种方式指定列表:
cake my --input "file1, file2, file3" --output "out1, out2, out3"
如果您愿意,也可以这样做,但我认为与上述相比,阅读和理解并不容易。
cake my "file1, file2, file3" "out1, out2, out3"
你必须用逗号爆炸()字符串,然后比较两个数组的长度,如果它们匹配,如果没有显示错误。
在对它们执行某些操作之前,应检查每个文件是否存在,并验证输出位置是否也可写。