sapi_windows_vt100_support

(PHP 7 >= 7.2.0, PHP 8)

sapi_windows_vt100_supportObtém ou define suporte VT100 para o fluxo especificado associado a um buffer de saída de um console Windows.

Descrição

sapi_windows_vt100_support(resource $stream, ?bool $enable = null): bool

Se enable for null, a função retorna true se o fluxo stream tem códigos de controle VT100 habilitados, false caso não tenha.

Se enable for do tipo bool, a função tentará habilitar ou desabilitar os recursos VT100 do fluxo stream. Se o recurso tiver sido habilitado (ou desabilitado) com sucesso, a função retornará true, caso contrário retornará false.

Na inicialização, o PHP tenta habilitar o recurso VT100 dos fluxos STDOUT/STDERR. A propósito, se esses fluxos forem redirecionados para um arquivo, os recursos VT100 podem não ser habilitados.

Se o suporte a VT100 for habilitado, é possível usar sequências de controle como são conhecidas pelo terminal VT100. Elas permitem a alteração da saída do terminal. No Windows essas sequências são chamadas Sequências de Terminais Virtuais do Console.

Warning

Esta função usa a opção ENABLE_VIRTUAL_TERMINAL_PROCESSING implementada na API do Windows 10, por isso o recurso VT100 pode não estar disponível em versões antigas do Windows.

Parâmetros

stream

O fluxo no qual a função irá operar.

enable

Se for do tipo bool, o recurso VT100 será habilitado (se true) ou desabilitado (se false).

Valor Retornado

Se enable for null: retorna true se o recurso VT100 for habilitado, false caso contrário.

Se enable for do tipo bool: Retorna true em caso de sucesso ou false em caso de falha.

Registro de Alterações

Versão Descrição
8.0.0 enable agora pode ser nulo.

Exemplos

Example #1 Estado padrão de sapi_windows_vt100_support()

Por padrão, STDOUT e STDERR têm o recurso VT100 habilitado.

php -r "var_export(sapi_windows_vt100_support(STDOUT));echo ' ';var_export(sapi_windows_vt100_support(STDERR));"

O exemplo acima produzirá algo semelhante a:

true true

A propósito, se um fluxo for redirecionado, o recurso VT100 não será habilitado:

php -r "var_export(sapi_windows_vt100_support(STDOUT));echo ' ';var_export(sapi_windows_vt100_support(STDERR));" 2>NUL

O exemplo acima produzirá algo semelhante a:


true false

Example #2 sapi_windows_vt100_support() mudando de estado

Não será possível habilitar o recurso VT100 feature de STDOUT ou STDERR se o fluxo for redirecionado.

php -r "var_export(sapi_windows_vt100_support(STDOUT, true));echo ' ';var_export(sapi_windows_vt100_support(STDERR, true));" 2>NUL

O exemplo acima produzirá algo semelhante a:

true false

Example #3 Exemplo de uso do suporte a VT100 habilitado

<?php
$out = fopen('php://stdout','w');
fwrite($out, 'Eu me esqueci de uma leta.');
// Move o cursor dois caracteres para trás
fwrite($out, "\033[2D");
// Insere um espaço vazio, deslocando o texto existente para a direita -> 'Eu me esqueci de uma let a.'
fwrite($out, "\033[1@");
fwrite($out, 'r');
?>

O exemplo acima produzirá:

Eu me esqueci de uma letra.