(PHP 7 >= 7.2.0, PHP 8)
sapi_windows_vt100_support — Получить или установить поддержку VT100 для заданного потока, связанного с буфером вывода консоли Windows
$stream
, ?bool $enable
= null
): bool
Если параметр enable
равен null
, функция возвращает true
или false
в зависимости от того, разрешены или нет управляющие последовательности VT100
для stream
Если параметр enable
является логическим значением (bool), функция попытается включить или
выключить функциональность VT100 для потока stream
.
В этом случае функция вернёт true
или false
в зависимости от успешности выполнения.
При старте, PHP пытается включить VT100 для потоков
STDOUT
и STDERR
. Но если, например,
эти потоки перенаправлены в файл, то поддержка VT100 может не включиться.
Если включена поддержка VT100, то можно использовать управляющие последовательности, так как они известны терминалу. Они позволяют изменять вывод терминала. В Windows эти последовательности известны как "Console Virtual Terminal Sequences".
Эта функция использует реализацию флага
ENABLE_VIRTUAL_TERMINAL_PROCESSING
в Windows 10 API,
следовательно функциональность VT100 может быть недоступна в более старых версиях Windows.
stream
Поток, с которым будет работать функция.
enable
Если является логическим значением (bool), то должно быть либо true
, либо false
, для включения и отключения VT100 соответственно.
Если параметр enable
равен null
, функция возвращает true
или false
в зависимости от того, разрешены или нет управляющие последовательности VT100
Если параметр enable
является логическим значением (bool): Возвращает true
в случае успешного выполнения или false
в случае возникновения ошибки.
Версия | Описание |
---|---|
8.0.0 |
enable теперь допускает значение null.
|
Пример #1 Состояние sapi_windows_vt100_support() по умолчанию
По умолчанию, для STDOUT
и STDERR
поддержка VT100 включена.
php -r "var_export(sapi_windows_vt100_support(STDOUT));echo ' ';var_export(sapi_windows_vt100_support(STDERR));"
Результатом выполнения данного примера будет что-то подобное:
true true
Если поток перенаправлен, то поддержка VT100 будет отключена:
php -r "var_export(sapi_windows_vt100_support(STDOUT));echo ' ';var_export(sapi_windows_vt100_support(STDERR));" 2>NUL
Результатом выполнения данного примера будет что-то подобное:
Пример #2 Изменение состояния с помощью sapi_windows_vt100_support()
Вы не можете включить поддержку VT100 для STDOUT
или STDERR
если эти потоки перенаправлены.
php -r "var_export(sapi_windows_vt100_support(STDOUT, true));echo ' ';var_export(sapi_windows_vt100_support(STDERR, true));" 2>NUL
Результатом выполнения данного примера будет что-то подобное:
true false
Пример #3 Пример использования с поддержкой VT100
<?php
$out = fopen('php://stdout','w');
fwrite($out, 'Just forgot a lettr.');
// Переместить курсор на две позиции назад
fwrite($out, "\033[2D");
// Вставляет один пробел, сдвигая существующий текст вправо -> Просто забыли букву.
fwrite($out, "\033[1@");
fwrite($out, 'e');
?>
Результат выполнения данного примера:
Just forgot a letter.