コマンドラインでPHP活用:$argv

先日お知らせしたとおり、Rubyを学び始めた私です。

さて、学び始めた中でRubyのARGV[]という配列オブジェクトが紹介されています。これはコマンドラインでRubyを使用する時に活用できるものです。使い方はこんな風です。

ファイルの中身。argv.rb

str = ARGV[0]
print str

コマンドラインで実行

>ruby argv.rb test

実行結果

test

‘つまり、コマンドラインで実行ファイルの引数が使えるようになる代物な訳です。この配列オブジェクトをうまく使えればコマンドラインから各種作業ができるようになる!これは…カッコいい!!(大体の意味でプログラマーっぽい)

これPHPではできないのでしょうか?ということで、ググッてみると$argvを発見。そのまま!$argvはARGVと同じく配列です。ただ、異なるのがその振る舞いです。

ARGVは[ファイル名] 引数1 引数2 引数3に対して、ARGVの値は以下のように引数を格納されます。

ARGV[0] = '引数1'
ARGV[1] = '引数2'
ARGV[2] = '引数3'

これに対して、PHPの$argvは以下のように引数が格納されます。

$argv[0] = 'ファイル名';
$argv[1] = '引数1';
$argv[2] = '引数2';
$argv[3] = '引数3'

「どうせ同じ挙動なんじゃないの?」と思い、ずっとはまっていました。ドキュメントはしっかり読みましょう。(しみじみ)

さて、挙動が分かったところで簡単なPHPを書いてみましょう。

$str = $argv[1];
echo $str."\n";
//argv.phpとして保存

これをコマンドラインからこう実行してみる。

>php argv.php SampleScript
結果:
SampleScript

活用手法はまだまだ考えているところですが、簡単ファイル処理をPHPファイルに記述しておけば、容易に改行変換やtrimしたりできるようになります。もちろん引数にファイルを指定することもできますから、その活用の幅は非常に大きいです!何でこういうことを教則本に載せてくれないのだろうか…?

という訳で、皆さんlocalにファイルを作成して、よりプログラマーっぽいことをしましょう!

コメントを残す

メールアドレスが公開されることはありません。