でじくる。

主にプログラムの話題などを扱うブログです。

$argvはスーパーグローバルではない

PHPは主にWebアプリを作成するための言語ですが、

当然のごとくコマンドラインで動くスクリプトを作成することもできます。

 

一般的にどの程度PHPコマンドラインで使われているかは知りませんが、

私はあまりPHPコマンドラインのスクリプトを書いたりしません。

ごくまれに簡単なものを作るぐらいです。

 

で、先日、PHPコマンドラインのスクリプトを書いていて

はまってしまったというのが今日の話題。

 

コマンドライン引数を取得する場合、

PHPでは$argvという配列から取得することができます。

引数を渡した場合、データの入った$argvという配列が

勝手に作られる、と。

 

で、私は$_POSTや$_GETみたいに

$argvもスーパーグローバルな変数なんじゃね、と

思い込んでしまったというか、早合点してしまったのです。

 

実際の$argvはスーパーグローバルではないので、

クラスや関数の中から使用する場合は

引数などの形で渡してやる必要があります。