作成日:2021-02-08, 更新日:2021-02-08
引数の数を取得
・「$argc」を使う
・ファイル名もカウントされるので最低でも「1」(・・・phpコマンドの引数の一つ目がファイル名ってコトかな?)
サンプル
var_dump($argc);
▼結果
> php 〇〇〇.php int(1) > php 〇〇〇.php a1 b2 c3 int(4)
引数の値を取得
・「$argv」を使う
サンプル
var_dump($argv);
▼結果
> php 〇〇〇.php array(1) { [0]=> string(xx) ".\〇〇〇.php" } > php 〇〇〇.php -a1 -b2 -c3 array(4) { [0]=> string(xx) ".\〇〇〇.php" [1]=> string(3) "-a1" [2]=> string(3) "-b2" [3]=> string(3) "-c3" }
引数をキー・バリュー形式で取得
・「getopt()」を使う(※getopt( string $short_options, array $long_options=[], int &$rest_index=null ))
・オプションが「-」と「--」で微妙に異なる
・キーとバリューは空白不要
「-」付きのオプションと値をキー・バリューで取得
・キー名は1文字の英数のみ
・「getopt()」の引数の一つ目を使う
・指定したオプションのみ引数として取得可能
・引数の値は「必須、任意、不許可」と設定可能
「:(コロン)」の数
「:(コロン)」の数 | 内容 | 例)「-a」と「-b」を取得 |
---|---|---|
2 | 値は任意 |
getopt('a::b::') |
1 | 値は必須 |
getopt('a:b:') |
0 | 値は拒否 |
getopt('ab') |
サンプル
コマンド | 値は任意
var_dump(getopt('a::1::')); |
値は必須
var_dump(getopt('a:1:')); |
値は拒否
var_dump(getopt('a1')); |
---|---|---|---|
> php 〇〇〇.php -a9 -1b |
array(2) { ["a"]=> string(1) "9" [1]=> string(1) "b" } |
array(2) { ["a"]=> string(1) "9" [1]=> string(1) "b" } |
array(2) { ["a"]=> bool(false) [1]=> bool(false) } |
> php 〇〇〇.php -a9 -1 |
array(2) { ["a"]=> string(1) "9" [1]=> bool(false) } |
array(2) { ["a"]=> string(1) "9" } |
array(2) { ["a"]=> bool(false) [1]=> bool(false) } |
> php 〇〇〇.php -a9 |
array(1) { ["a"]=> string(1) "9" } |
array(1) { ["a"]=> string(1) "9" } |
array(1) { ["a"]=> bool(false) } |
ダメな例
オプション名を2文字以上にしたいときのダメな例
var_dump(getopt('year::'));
▼結果
> php 〇〇〇.php -year2021 array(3) { ["y"]=> bool(false) ["e"]=> bool(false) ["a"]=> string(5) "r2021" }
「--」付きのオプションと値をキー・バリューで取得
「-」付きのオプションの設定と基本は同じだけど、下記が異なる
・キー名は2文字以上でもOK
・キー名と値はに空白
・「getopt()」の引数の2つ目を使う
・区切り文字の指定が省くと取得できないことがある
$short_rule_argv = ''; $long_rule_argv = array( 'a::', '1::', 'year::', ); var_dump(getopt($short_rule_argv, $long_rule_argv));
※「:(コロン)」の数の指定は上記と同じ
区切り文字「=」を使う
> php 〇〇〇.php --a=9 --1=b --year=2021 array(3) { ["a"]=> string(1) "9" [1]=> string(1) "b" ["year"]=> string(4) "2021" }
区切り文字を半角空白にした場合
> php 〇〇〇.php --a 9 --1 b --year 2021 array(1) { ["a"]=> bool(false) }
空白入りの値を渡したい
> php 〇〇〇.php --a="9 8" --1="b c" --year="202 1" array(3) { ["a"]=> string(3) "9 8" [1]=> string(3) "b c" ["year"]=> string(5) "202 1" }
メモ
▼「a"b」みたいに「"」も値に含めて渡したいけど出来なかった
・「php 〇〇〇.php a"b」
・「php 〇〇〇.php "a""b"」
・「php 〇〇〇.php "a\"b"」
・「php 〇〇〇.php "a""b"」
※「$argv」のほうも確認したけど出来なかった
※「a"b」じゃなく「a'b」だと渡すことはできた(※「"」で囲む必要はあるっぽい:「php 〇〇〇.php "a'b"」)
どうしても「"」を渡したければ・・・方法はあるだろうけど、「"」を渡す予定がないので・・・未調査。