$argvはスーパーグローバルではない
PHPは主にWebアプリを作成するための言語ですが、
当然のごとくコマンドラインで動くスクリプトを作成することもできます。
一般的にどの程度PHPがコマンドラインで使われているかは知りませんが、
私はあまりPHPでコマンドラインのスクリプトを書いたりしません。
ごくまれに簡単なものを作るぐらいです。
はまってしまったというのが今日の話題。
コマンドライン引数を取得する場合、
PHPでは$argvという配列から取得することができます。
引数を渡した場合、データの入った$argvという配列が
勝手に作られる、と。
で、私は$_POSTや$_GETみたいに
$argvもスーパーグローバルな変数なんじゃね、と
思い込んでしまったというか、早合点してしまったのです。
実際の$argvはスーパーグローバルではないので、
クラスや関数の中から使用する場合は
引数などの形で渡してやる必要があります。