2016-05-12 22 views
3

コマンドラインで実行するように設計された従来のphpスクリプト()をデバッグしようとしています。このスクリプトは1つのオプションの引数の後にN個のオプションを指定するように設計されています。以下の場合の両方がうまくいくという意図で書かれています。phpシェルスクリプトの引数とオプションの使い方

ケース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を修正するオプションをフェッチする方法はありますか?

答えて

3

私自身の答えはhttp://php.net/getoptです。 RTM。

最初のオプションが見つからない場合、オプションの解析が終了します。 次のものは破棄されます。

関連する問題