(PHP 7 >= 7.2.0, PHP 8)
sapi_windows_vt100_support — Obtém ou define suporte VT100 para o fluxo especificado associado a um buffer de saída de um console Windows.
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.
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.
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.
| Versão | Descrição |
|---|---|
| 8.0.0 |
enable agora pode ser nulo.
|
Exemplo #1 Estado padrão de sapi_windows_vt100_support()
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:
Exemplo #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
Exemplo #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.