Web上で使えるPHPのコンソールが欲しい
きっかけ
今書いた新しいクラスのメソッドを仮のパラメータを入れて動くかどうかだけ知りたいときがあって
ブラウザの上で実行したい!って思ったのが始まり。
現状
とりあえずtextareaにtabキーでスペースが4つ挿入されるエディタになりました。
今までは
eval( stripslashes(rawurldecode($_GET['code'])) );
として送られてきたコードをevalしていたわけですが、これだとエラーが発生したときにevalがfalseを返して、落ちてしまいます。
PHPマニュアルを見ると
評価されるコードの中で return が コールされない限り、eval() は NULL を返します。 return がコールされた場合は、その値を返します。 評価されるコードの中でパースエラーが発生した場合は、 eval() は FALSE を返します。 それ以降のコードは通常通り実行されます。 eval() の中でのパースエラーを set_error_handler() で捕捉することはできません。
となっていて、エラーを補足出来ない模様。
しかし!下記のように出力制御関数を使うことで、エラーを出力できるようになりました。
ob_start();
eval( stripslashes(rawurldecode($_GET['code'])) );
$result = ob_get_clean();
echo $result;
これで一歩前進だ。