PHPのコマンドライン引数を完全ガイド!初心者でもわかるCLI引数の取得と処理($argv・getopt)
生徒
「PHPって、画面に表示するだけじゃなくて、コマンドで動かすこともできるんですか?」
先生
「できます。PHPにはCLI(コマンドラインインターフェース)という使い方があります。」
生徒
「コマンドラインって、黒い画面のことですよね?文字を入力するのが怖いです…」
先生
「大丈夫です。文字だけで操作しますが、仕組みはとても単純です。今日は引数の使い方を見ていきましょう。」
1. PHPのCLIとは?コマンドラインで動くPHP
PHPというと、Webサイトを作る言語というイメージが強いですが、実はPHP CLIと呼ばれる仕組みを使うと、パソコンのコマンドラインから直接PHPを実行できます。コマンドラインとは、マウスを使わずに文字を入力して操作する画面のことです。Windowsでは「コマンドプロンプト」、Macでは「ターミナル」と呼ばれます。
CLIはCommand Line Interfaceの略で、文字で命令を出す操作方法を意味します。PHPのCLIを使うと、ファイルの処理や自動作業、簡単なツール作成などが可能になります。
2. コマンドライン引数とは?人に渡すメモのようなもの
コマンドライン引数とは、PHPファイルを実行するときに一緒に渡す情報のことです。たとえば「この名前で挨拶して」「この数字を使って計算して」というような指示を、実行時に渡せます。
これは、人に紙を渡すイメージに近いです。PHPファイルが人だとすると、引数は「一緒に渡すメモ」です。PHPはそのメモを読んで、処理の内容を変えます。
3. $argvとは?引数が全部入った配列
$argvは、PHPのCLIで自動的に使える変数です。配列という箱の集まりの形で、コマンドライン引数がすべて入っています。配列とは、番号付きの箱が並んでいるものだと考えてください。
$argv[0]にはPHPファイル名、$argv[1]以降に実際の引数が入ります。
<?php
print_r($argv);
このPHPファイルを次のように実行します。
php sample.php 太郎 20
実行結果は次のようになります。
Array
(
[0] => sample.php
[1] => 太郎
[2] => 20
)
4. $argvを使った簡単な処理例
では、引数を使って実際に処理をしてみましょう。ここでは、名前を受け取って挨拶を表示します。
<?php
$name = $argv[1];
echo $name . "さん、こんにちは";
太郎さん、こんにちは
このように、引数を使うことで、同じPHPファイルでも実行するたびに違う結果を出せます。
5. getoptとは?オプション付き引数を扱う方法
getoptは、少し進んだ引数の取得方法です。オプションとは、「-n」や「--name」のように、意味を持った名前付きの引数です。リモコンのボタンのように、押すボタンで動作が変わるイメージです。
getoptを使うと、どの引数が何の意味かが分かりやすくなります。
<?php
$options = getopt("n:");
echo $options["n"];
php sample.php -n 太郎
太郎
6. 長いオプション名(--name)の使い方
短いオプションは覚えにくいこともあります。そんなときは、長い名前のオプションが便利です。
<?php
$options = getopt("", ["name:"]);
echo $options["name"];
php sample.php --name=太郎
太郎
見た目が分かりやすく、初心者にも安心です。
7. $argvとgetoptの違いと使い分け
$argvは、とてもシンプルで仕組みが分かりやすい反面、引数の意味を自分で管理する必要があります。一方、getoptは少し書き方が増えますが、引数の意味がはっきりします。
簡単な確認や練習には$argv、少し整理されたツールにはgetopt、というように使い分けるとよいでしょう。
8. 初心者がつまずきやすいポイント
CLIでよくある失敗は、引数を渡し忘れることや、番号を間違えることです。また、文字と数字の違いが分からず戸惑うこともあります。PHPは優しい言語なので、エラー表示をよく読むことが大切です。
最初は「黒い画面が怖い」と感じますが、実際は決まった文字を入力するだけです。何度も試すことで自然と慣れていきます。