readlineサポート付きコンパイル済みPHPパッケージはありますか?Windows用にコンパイルされたreadlineサポート付きphp
対話モードでphpを使用するにはreadlineが必要です。
私はWindows用のPHPをコンパイルする方法を見ましたが、私は持っていないMS Visual Studioが必要です。
readlineサポート付きコンパイル済みPHPパッケージはありますか?Windows用にコンパイルされたreadlineサポート付きphp
対話モードでphpを使用するにはreadlineが必要です。
私はWindows用のPHPをコンパイルする方法を見ましたが、私は持っていないMS Visual Studioが必要です。
Readline拡張機能はWindowsでは利用できません。 cygwinでPHPをコンパイルすることが可能です--with-readline
オプション
galymzhanからの回答を考慮すると、Windowsで対話モードでPHPを実行する別のオプションは、PHP REPLのいずれかを使用することです。あなたはreadlineに依存しているので、タブの補完は得られません。
これまでの私のために働いたREPLはPHPシェル
ウェブサイトがダウンしました:( – icc97
//The readline library is not available on Windows.
<?php
if (PHP_OS == 'WINNT') {
echo '$ ';
$line = stream_get_line(STDIN, 1024, PHP_EOL);
} else {
$line = readline('$ ');
}
?>
である私はストレートPHPのドキュメントのうち、このコードを発見しました。ご覧のとおり、Windowsマシンのreadlineライブラリはサポートしていません(少なくともddefaultパケットの場合)。このコードは上記のコードで "$ line = blah、blah"を実行することで同様のことができます。
私はそれを試してみましたが、ウィンドウの標準のcmdを使って動作させました(ただし、インタラクティブなphpモードは何に関係なくWindowsでは動作しません)。しかし、実際にはそのコード)。
これは少し遅れるかもしれませんが、ここでは私のために、この問題を解決するソリューションです:C#のConsole
のスタイルでは、私はreadLine()
と同様にwriteLine($str)
を行うことができます少しクラスを書いた:
class Console {
const READLINE_MAX_LENGTH = 0xFFFF;
const WRITELINE_NEWLINE = "\n";
private static /*Resource*/ $stdin;
private static /*Resource*/ $stdout;
public static function /*void*/ close() {
fclose(self::$stdin);
fclose(self::$stdout);
}
public static function /*void*/ open() {
self::$stdin = fopen('php://stdin', 'r');
self::$stdout = fopen('php://stdout', 'w');
}
public static function /*string*/ readLine() {
return stream_get_line(self::$stdin, self::READLINE_MAX_LENGTH, "\r\n");
}
public static function /*void*/ writeLine (/*string*/ $str) {
fwrite(self::$stdout, $str);
fwrite(self::$stdout, self::WRITELINE_NEWLINE);
}
}
使用例:
Console::open();
echo "Input something: ";
$str = Console::readLine();
if (is_string($str))
Console::writeLine($str);
else
echo "ERROR";
Console::close();
はEDIT:この方法は明らかにのみトン場合は、動作します親プロセスはSTDOUTまたはSTDINを変更しません。
私が長年求めてきた質問は、なぜWindowsではこの基本的で不可欠な機能が利用できないのですか? OSが何も同等のものを提供しないなら、確かにそれをエミュレートすることができます。 –
5年後、PHP v7.1のreadlineからWindowsで利用可能になりました – icc97