忍者ブログ

STEP UP BLOG

Home > ブログ > 記事一覧

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

PHPからのコマンドライン引数取得

PHPは主にWebアプリケーションの開発に使われています。
HTTPリクエストを受け取ってHTMLやJSONなどを返すわけです。
ですが、たまにWeb関係ない処理もさせたくなります。
コマンドラインからPHPを使いたくなるときもある(滅多にないけど)。
あるPHPファイルを単純にコマンドラインから実行したい場合は、
$ php some.php
な感じで普通に実行できます。
ここからが本題で、コマンドラインから実行するからにはコマンドライン引数を受け取って処理したい。
ということで、まさにコマンドライン引数を取得するための関数がgetopt()です。
http://php.net/manual/ja/function.getopt.php
array getopt ( string $options [, array $longopts ] )
以下のように使います。
<?php
$options = getopt('xy');
var_dump($options);
$ php some.php -x
array(1) {
    ["x"]=>
    bool(false)
}

$ php some.php -z -y -x
array(2) {
    ["y"]=>
    bool(false)
    ["x"]=>
    bool(false)
}
というようにgetopt()で指定した文字だけ配列として返ってきます。
実際にあるかどうかはisset()でもして確かめればよいでしょう。
第1引数のoptionsでは1文字のオプションとなります(-aとか-bとか)。
値を渡したいときは、
$options = getopt('x:y::');
のようにコロンを1つ(値が必須)、もしくは2つ(値は任意)を付けます。
そうすると、
$ php some.php -x=abc -y
array(2) {
    ["x"]=>
    string(3) "abc"
    ["y"]=>
    bool(false)
}
$ php some.php -xaaa -y=bbb
array(2) {
    ["x"]=>
    string(3) "aaa"
    ["y"]=>
    string(3) "bbb"
}
$ php some.php -x
array(0) {
}
となります。
"="はあってもなくても大丈夫。
最後のは値必須なのに-xだけなので、何も引数取れてないということです。
さらに詳しくはphp.netを。。
PR

PAGE TOP