CakePHP,Shell:如何定义无限数量的参数

时间:2014-10-16 07:54:54

标签: shell cakephp cakephp-2.5

在CakePHP shell中,我需要使用无限数量的参数。例如:

cake MyShell mycommand inputFile inputFile2 inputFileN outputFile

就我而言,我确信至少应该有2个参数(inputFileoutputFile),所以第一个和最后一个,但我不知道是否有介于两者之间的其他人。

所以,在我的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,但我想知道是否有更好的解决方案。

感谢。

1 个答案:

答案 0 :(得分:2)

  

但我想知道是否有更好的解决方案。

其他shell工具允许您以这种方式指定列表:

cake my --input "file1, file2, file3" --output "out1, out2, out3"

如果您愿意,也可以这样做,但我认为与上述相比,阅读和理解并不容易。

cake my "file1, file2, file3" "out1, out2, out3"

你必须用逗号爆炸()字符串,然后比较两个数组的长度,如果它们匹配,如果没有显示错误。

在对它们执行某些操作之前,应检查每个文件是否存在,并验证输出位置是否也可写。