【发布时间】:2016-05-12 20:43:57
【问题描述】:
我正在尝试调试旨在通过命令行运行的遗留 php 脚本 (???? )。该脚本设计为采用 1 个可选参数,后跟 N 个选项。编写它的目的是使以下两种情况都有效。
案例 1:带选项的参数:
php script.php <argument> --option-a=tuesdays --option-b
案例 2:没有带选项的参数:
php script.php --option-c
在脚本内部,参数和选项使用以下方式获取:
$argument = (strpos($argv[1], '-') === 0) ? '' : $argv[1];
$options = getopt('', [
'option-a:',
'option-b',
'option-c',
]);
案例 2 始终按预期工作。我收到选项,但参数为空。
案例 1 未按预期工作。我收到了参数,但 $options 数组始终为空。
我见过the suggestion that reverses the order of the options and arguments,所以我会通过php script --option-c <argument> 调用它。我不想更改它的调用方式,因为这是一个遗留脚本,可以在天知道的地方使用。
有没有办法可以使用 getopt() 来获取可以纠正案例 1 的选项?
【问题讨论】: