PHPインタラクティブコンソール

この考えは表面にありますが、私がこのことを示したほとんどの人は驚いて、彼らにリンクを与えるように頼みました。 アイデアは単純ですが、ほとんどの人がstdinとreadlineを知っています。

したがって、インタラクティブコンソールはシンプルで非常に便利です。 履歴とオートコンプリート。

そんななこと

ただし、3つの質問と2つの問題があります。

1)ウィンドウ。 Windowsにはreadlineはなく、それぞれオートコンプリートはありません。 標準入力のみ。 彼のために、ラッパーは書かれていますが、残念ながら色のESCシーケンスは機能しません(ただし、修正する必要があります)。

2)readline + libedit / libreadline。 (できれば、むしろ)インストールする必要があります。 最後のライブラリが既に所有している場合(そうでない場合は、emerge libeditコマンドを使用してインストールします)、 readline php拡張をビルドする必要があります。 これは次のように行われます:cd php-5.xx / ext / readline && phpize && ./configure && make && make install

3)私は個人的にlibeditを設定しなければなりませんでした。 ファイル〜/ .editrcはこのように見えます:

bind "^R" em-inc-search-prev
bind "^[O5C" vi-next-word
bind "^[O5D" vi-prev-word
bind "^[[1~" ed-move-to-beg
bind "^[[4~" ed-move-to-end
bind "^[[3~" ed-delete-next-char


次に問題について。 1つ目は、eval内のコードは解析エラーで制御できるが、致命的なエラーでは制御できないことです。 したがって、致命的なエラーが発生すると、コンソール全体がクラッシュします。 公平に言えば、致命的なエラーが発生したのは数回だけで、ほとんどのエラーは通知エラーまたは解析エラーです。

2番目の問題は、曲線補完ライン拡張です。これは、オートコンプリート機能からの「オプションなし」という回答を受け入れません。 私はそれを克服できませんでした、そして今、文字を入力せずにすぐにまたはスペースの後にTabを押すと、ファイルのリストが表示され、これが時々干渉します。
しかし、全体として、このようなコンソールは非常に便利です。

ソースはGoogleコード上にあります

PS(退屈している人向け): for ($i='a';$i<='z';$i++) echo $i.' '; printsの文字列 for ($i='a';$i<='z';$i++) echo $i.' ';

Source: https://habr.com/ru/post/J96291/


All Articles