この前の記事の続き。

rubyには、irbっていうinteractive modeあります。
irb実行中に、 require ‘irb/completion’ すると、TABでメソッド名等の補完ができるようになって大変便利です。

PHPのinteractive modeでも同じことができないかなと思い、
探してみたところ、PHP5.1 から標準で導入されてることがわかりました1

ただし、–with-readline付きでPHPをコンパイルした場合に限ります。2

yumでインストールしたPHPは、–with-readlineが付いてないので、3
PHP-cliだけソースコードからもう一度コンパイルしてみました。

環境は、CentOS 5.1です。

$ wget http://jp2.php.net/get/php-5.2.6.tar.gz/from/jp.php.net/mirror
$ tar xzvf php-5.2.6.tar.gz
$ cd php-5.2.6/
$ yum install libxml2-devel
$ yum install readline-devel
$ ./configure --prefix=~/local --disable-cgi --with-readline
$ make
$ make install
$ ~/local/bin/php -a
Interactive shell

php > get_class  [TAB]
get_class          get_class_methods  get_class_vars
php > get_class

うむ、便利だ。

  1. 補完機能付きのinteractive modeは、Interactive Shellっていう名称が付いてます。 []
  2. なんで、readlineを動的リンクするだけで使えるようにしてないんだー []
  3. 少なくとも、CentOS 5.1のyumでインストールしたPHPは–with-readlineはついてませんでした。 []