R. Eric Wheeler 0f1cca15df | ||
---|---|---|
src/Console | ||
tests | ||
tools/php-cs-fixer | ||
.gitignore | ||
.gitlab-ci.yml | ||
.php-cs-fixer.dist.php | ||
LICENSE | ||
README.md | ||
composer.json | ||
composer.lock | ||
functions.php | ||
header.txt | ||
phpunit.xml |
README.md
getch
This simply uses the FFI extension to enable _getch and _ungetch in Windows and linux.
$ composer require sikofitt/getch:dev-master
use Sikofitt\Console\Getch;
$g = new Getch($linuxLibrary = null); // can also be a library that implements a function called _getch;
// by default uses the bundled Resources/libgetch.so
// on windows uses the built in _getch function.
$ord = $g->getch();
print \chr($ord);
$ord = $g->ungetch('A');
$res = $g->getch();
$ord === $res // 65
Note that if you want to put a word into the STDIN stack, you need to do it in reverse.
foreach(\str_split(\strrev('Hello World!')) as $char) {
ungetch($char);
}
$result = '';
do {
$ord = getch();
$result .= \chr($ord);
} while($ord !== ord('!'));
print $result; // Hello World!
There are also helper functions called getch() and ungetch();
use function Sikofitt\Console\getch;
$ord = getch($linuxLibrary = null);
print \chr($ord);
$ord = ungetch('B');
$res = getch();
$ord === $res // 66
Tests
vendor/bin/phpunit