【PHP8.x】readline_completion_function関数の使い方
作成日: 更新日:
readline_completion_function関数は、PHPのreadline拡張機能において、ユーザーがコマンドラインインターフェース(CLI)で入力中にタブキーを押した際に、自動補完の候補を生成するためのカスタム関数を設定する関数です。
この関数にコールバック関数を登録することで、PHPスクリプトが対話的に動作している際に、標準のファイル名補完とは異なる独自の補完ロジックを実装できるようになります。登録されたコールバック関数は、二つの引数を受け取ります。一つ目は、ユーザーが現在入力している部分文字列(ワード)、二つ目は、タブ補完が行われている位置を示す整数値です。このコールバック関数は、指定された部分文字列に基づいて、補完候補となる文字列の配列を返さなければなりません。
例えば、特定のコマンドの引数や、データベースから取得したデータの名称などを補完候補として提示したい場合に非常に有効です。readline_completion_function
を使用すると、開発者はCLIアプリケーションのユーザーエクスペリエンスを大幅に向上させることができます。一度コールバック関数が設定されると、以前に設定されていた補完関数は上書きされます。この機能を利用するには、PHPが--with-readline
オプションを付けてコンパイルされ、readline
拡張機能が有効になっている必要があります。主にコマンドラインで動作するPHPスクリプト向けに設計されています。
基本的な使い方
構文(syntax)
<?php
function my_completion_callback(string $input): array
{
$available_options = ['command_a', 'command_b', 'command_c', 'another_command'];
return array_filter($available_options, fn($option) => str_starts_with($option, $input));
}
readline_completion_function('my_completion_callback');
引数(parameters)
callable $callback
- callable $callback: 行の補完候補を生成するコールバック関数を指定します。この関数は、現在の入力文字列と、生成された補完候補の配列を引数として受け取ります。
戻り値(return)
bool
指定されたコールバック関数が正常に登録された場合は true を、そうでない場合は false を返します。