対話シェル--with-readline オプションつきで PHP をコンパイルした場合に CLI SAPI で対話シェルが使えるようになりました。 対話シェルは、-a オプションで使うことができます。 PHP 7.1.0 以降では、readline 拡張モジュール が有効であれば 対話シェルは Windows 上でも使用可能です。 対話シェルを使うと、PHP のコードを打ち込んで直接実行できるようになります。 例1 対話シェル上でのコードの実行 $ php -a Interactive shell php > echo 5+8; 13 php > function addTwo($n) php > { php { return $n + 2; php { } php > var_dump(addtwo(2)); int(4) php > 対話シェル上では、タブ補完機能を使って 関数や定数、クラス名、変数名、static メソッドの呼び出し、 そしてクラス定数を補完することができます。 例2 タブ補完 補完候補が複数あるときにタブキーを二度押すと、 補完候補の一覧が表示されます。 php > strp[TAB][TAB] strpbrk strpos strptime php > strp 候補がひとつしかないときは、タブキーを一度押せば残りを補完してくれます。 php > strpt[TAB]ime( 対話シェルのセッション上で定義したものについても補完することができます。 php > $fooThisIsAReallyLongVariableName = 42; php > $foo[TAB]ThisIsAReallyLongVariableName 対話シェル上では操作履歴が保存され、上矢印キーと下矢印キーで履歴にアクセスすることができます。 履歴の保存先は ~/.php_history ファイルです。
CLI SAPI では、二つの
php.ini 設定が使えます。 また、対話シェルの中では、 php.ini 項目を設定する際に短縮記法が使えます。 例3 対話シェル内での php.ini の設定
php > #cli.prompt=hello world :> hello world :> バッククォートを使うと、PHP のコードの実行結果をプロンプトとして用いることができます。 php > #cli.prompt=`echo date('H:i:s');` php > 15:49:35 php > echo 'hi'; hi 15:49:43 php > sleep(2); 15:49:45 php > ページャを less に設定します。 php > #cli.pager=less php > phpinfo(); (出力が less に送られます) php >
インタラクティブモードPHP 8.1.0 より前のバージョンでは、readline 拡張モジュールが利用できない場合に、 CLI SAPI を -a オプション付きで呼び出すとインタラクティブモードになっていました。 このモードでは、 完全な PHP スクリプトを標準入力(STDIN)から与えなければいけません。 スクリプトを入力後、 CTRL D (POSIXの場合) や CTRL Z の後に ENTER (Windows) を続けると、その PHP スクリプトが評価されていました。 CLI SAPI を -a なしで呼び出しても基本的に同じ動きをします。 PHP 8.1.0 以降では、 readline 拡張モジュールが利用できない場合、 CLI SAPI に -a オプションを付けた呼び出しは失敗します。 |