読者です 読者をやめる 読者になる 読者になる

Life, Education, Death

プログラミング以外でも思ったことをつらつらと書きたい

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;

これで一歩前進だ。