PHP5.4のインタラクティブシェル: 細かな改善 (PHP5.4 Advent Calendar2011 一日目)
PHPに限らず、プログラミング言語のちょっとした挙動や関数の動作を確認したいときがよくあります。そういう時、何か小さなコードをエディタで書いてコマンドラインで実行するのも良いですが、インタラクティブシェルを使うとより便利です。また、PHP5.4.0RC2の時点でインタラクティブシェルに関する細かな改善もあります。
この記事では、PHP5.4でのインタラクティブシェルを紹介します。
導入
PHPでインタラクティブシェルを利用する場合、configure時にオプションを指定する必要があります。PHP5.4RC2をダウンロードし、configure時に--with-readlineオプションにreadlineがインストールされているディレクトリを指定してビルドするとインタラクティブシェルが利用できるようになります。
$ cd path/to/php-5.4.0RC2 $ ./configure --with-readline=/path/to/lib $ make
readlineがない場合でも、代わりに--with-libeditオプションを指定することで有効に出来ます。
利用
CLIから-aオプションを付けてPHPを起動するとインタラクティブシェルが起動します。ここからコマンドライン上でPHPのコードを打つことができます。
$ sapi/cli/php -a Interactive shell php > echo "hogehoge\n"; hogehoge php >
関数を入力する途中でTABを押すと関数名やファイル名を補完してくれます。
また、php.iniの設定も#hoge=fugaという形式を入力することで簡単に切り替えられるようになっています。
php > #arg_separator.output=& php > echo http_build_query(["hoge" => "fuga", "foo" => "bar"]) . "\n"; hoge=fuga&foo=bar php > #arg_separator.output=& php > echo http_build_query(["hoge" => "fuga", "foo" => "bar"]) . "\n"; hoge=fuga&foo=bar
インタラクティブシェル関係のini設定も増えて、ページャやプロンプトを指定できるようになりました。
php > #cli.pager=less php > foreach (range(0, 1000) as $i) { echo $i . "\n"; } (lessが適用されて表示される) php > #cli.prompt=hoge > hoge >
他にも細かな点ですがfatal errorになってもシェルが終了しないようにもなっています。
終わり
というわけで、PHP5.4のインタラクティブシェルを紹介しました。ちょっとしたスクリプトやライブラリの動作を確かめるのに便利ですね。
この記事は、PHP5.4 Advent Calendar 2011の一日目として記しました。まだまだ参加者募集中です。次は@yohgakiさんお願いいたしますー。