getopt

関数の概要

PHPの getopt 関数は、CLI(コマンドラインインターフェイス)でスクリプトに渡された引数を解析し、オプションとして扱いやすい形で取得するための関数です。シェルスクリプトのオプション解析に近い形式で使うことができ、長いオプション名(–helpなど)や短いオプション名(-hなど)を簡単に扱えます。

パラメータの説明

戻り値

解析結果は連想配列として返されます。キーがオプション名、値がオプションに渡された引数(引数なしの場合は false または空文字列)となります。パースに失敗した場合は false を返します。

使用例

基本的な使い方

<?php
$options = getopt("a:b");
print_r($options);
?>

上記では -a に引数が必須、-b は引数無しのオプションを定義しています。
例えば、php script.php -a hello -b のように呼び出すと、$options["a" => "hello", "b" => false] がセットされます。

長いオプションの使用例

<?php
$options = getopt("h", ["help", "file:"]);
if (isset($options["h"]) || isset($options["help"])) {
    echo "Help表示しますn";
}
if (isset($options["file"])) {
    echo "ファイル名: " . $options["file"] . "n";
}
?>

この例では、-h または --help でヘルプ表示、--file でファイル名指定を受け付けます。

複数オプションを扱う例

<?php
$options = getopt("u:p:s", ["user:", "password:", "silent"]);
if (isset($options["u"]) || isset($options["user"])) {
    echo "ユーザー名: " . ($options["u"] ?? $options["user"]) . "n";
}
if (isset($options["p"]) || isset($options["password"])) {
    echo "パスワード: " . ($options["p"] ?? $options["password"]) . "n";
}
if (isset($options["s"]) || isset($options["silent"])) {
    echo "サイレントモードですn";
}
?>

ユーザー名、パスワード、サイレントモードの3種類のオプションを短縮形・長い形式どちらでも受け付けられます。

関連する関数

  • parse_str – クエリ文字列を配列に解析するための関数
  • argv 変数 – CLI引数の生の配列を取得するグローバル変数

まとめ

getopt 関数は、PHPスクリプトをCLIで実行する際に非常に便利な引数解析ツールです。短いオプションや長いオプションの両方を扱え、引数の有無も明確に管理できるため、コマンドラインツールを実務的に作成する際に欠かせません。この記事の例を参考に、自分のスクリプトに適したオプション解析を実装してみてください。