PHPの$argc変数とは?コマンドライン引数の数を取得する方法
はじめに
$argc は、PHPスクリプトがコマンドラインから実行された場合にのみ利用できるスーパーグローバル変数です。Webサーバーのドキュメントルート経由(HTTPリクエスト)で実行した場合は使用できません。この変数は整数型で、現在実行中のスクリプトに渡されたコマンドライン引数の個数を表します。
スクリプトを実行する際には必ずファイル名自体も引数として入力されるため、$argc の最小値は 1 となります。また、php.ini の register_argc_argv ディレクティブが無効になっている場合、この変数は利用できない点に注意が必要です。
$argc の基本的な使い方
以下のサンプルスクリプトは、スクリプト名を含めて合計3つの引数が渡されて実行されることを想定しています。引数の数が正しいかどうかを $argc でチェックし、条件分岐によって処理を切り替える典型的な例です。
サンプルコード
<?php
if ($argc!=3){
echo "invalid number of arguments";
die();
} else{
echo "number of arguments is valid";
}
?>実行結果
引数の数が不正な場合
引数を3つ以上指定して実行すると、条件に一致せずエラーメッセージが表示されます。
C:\xampp\php>php test1.php 1 2 3 invalid number of arguments
引数の数が正しい場合
スクリプト名を含めて引数がちょうど3つの場合は、正常なメッセージが出力されます。
C:\xampp\php>php test1.php 1 2 number of arguments is valid
まとめ
$argc を使うことで、CLIで実行されるPHPスクリプトに対して、必要な引数が正しく渡されているかを簡単に検証できます。バッチ処理やコマンドラインツールを作成する際には、$argc による引数チェックと、後述の $argv による実際の引数値の取得を組み合わせることで、堅牢なスクリプトを構築できます。
-
PHPで静的メソッドを引数として渡す方法【is_callable・call_user_func活用】
PHPでは、is_callable や call_user_func と同じ構文を使って、静的メソッド(スタティックメソッド)を引数として渡すことができます。静的メソッドをコールバックとして指定するには、ClassName::methodName という形式の文字列、または [ClassName::class, methodName] という配列形式を使用します。まず、基本的な呼び出し可能(callable)判定の例を見てみましょう。例:is_callableによる呼び出し可能性の確認<?php function my_func() {&nb
-
PHPで配列からコンストラクターに引数を渡す方法
PHPでは、Reflection API(リフレクションAPI)を利用することで、配列に格納された値をそのままコンストラクターに引数として渡すことができます。引数の個数や内容が動的に変わる場合に特に便利な機能です。ReflectionClass::newInstanceArgs メソッドとはReflectionClass::newInstanceArgs は、指定された引数の配列をもとに、新しいクラスのインスタンスを生成するメソッドです。メソッドのシグネチャは以下の通りです。public ReflectionClass::newInstanceArgs ([ array $args ] ) :