PHP の REPL スクリプト
仕事場では Mac で、自宅では Linux のターミナルで
$ php -r "$php_script;"
することが多々あるので、前々から REPL スクリプト書きたいと思っていた。
で、ようやく今日になって書いてみた。
まぁ便利。
#!/usr/bin/env php <?php $stdin = fopen('php://stdin', 'r'); $data = ''; while(true) { print '> '; $data .= fgets($stdin); if (preg_match('/\\\\$/', $data)==1) { $data = trim($data, "\x00..\x1F \x5C"); } else { eval($data); $data = ''; } }
基本的にはこのスクリプトを php-repl とかそんな名前で PATH のとおったディレクトリに保存して、
$ chmod a+x php-repl
で実行可能にして、
$ php-repl
REPL に入る。
例に倣って一行入力がある度に eval するが、コードにあるように行末にバックスラッシュを入力すると改行をエスケープするっぽい。
なので、長いコードを書くときは複数行で入力するといいかも。
REPL から抜けたいときには
> Ctrl-C
でもいいし、
> exit();
でもいい。