# sapi_windows_vt100_support

(PHP 7 >= 7.2.0, PHP 8)

sapi_windows_vt100_support — Obtient ou définit le support VT100 pour le flux spécifié associé à un tampon de sortie d'une console Windows.

### Description

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

Si `enable` est `null`, la fonction retourne `true` si le flux `stream` a les codes de contrôle VT100 activés, sinon `false`.

Si `enable` est un bool, la fonction essaiera d'activer ou de désactiver les fonctionnalités VT100 du flux `stream`. Si la fonctionnalité a été activée (ou désactivée) avec succès, la fonction renverra `true`, ou `false` sinon.

Au démarrage, PHP essaie d'activer la fonctionnalité VT100 des flux `STDOUT`/`STDERR`. Soit dit en passant, si ces flux sont redirigés vers un fichier, les fonctionnalités VT100 peuvent ne pas être activées.

Si le support VT100 est activé, il est possible d'utiliser des séquences de contrôle telles qu'elles sont connues du terminal VT100. Elles permettent la modification de la sortie du terminal. Sur Windows, ces séquences sont appelées séquences de terminal virtuel de console (Console Virtual Terminal Sequences).

Avertissement

Cette fonction utilise le drapeau `ENABLE_VIRTUAL_TERMINAL_PROCESSING` implémenté dans l'API Windows 10, donc la fonctionnalité VT100 peut ne pas être disponible sur les anciennes versions de Windows.

### Liste de paramètres

`stream`

  Le flux sur lequel la fonction va opérer.

`enable`

  Si bool, la fonctionnalité VT100 sera activée (si `true`) ou désactivée (si `false`).

### Valeurs de retour

Si `enable` est `null`: retourne `true` si la fonctionnalité VT100 est activée, sinon`false`.

Si `enable` est un bool: Cette fonction retourne `true` en cas de succès ou `false` si une erreur survient.

### Historique

Version | Description
--- | ---
8.0.0 | `enable` est déormais nullable.

### Exemples

Exemple #1 Etat par défault de sapi_windows_vt100_support()

Par défaut, `STDOUT` et `STDERR` ont la fonctionnalité VT100 activée.

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

Résultat de l'exemple ci-dessus est similaire à :

    true true

De plus, si un flux est redirigé, la fonctionnalité VT100 ne sera pas activée:

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

Résultat de l'exemple ci-dessus est similaire à :

true false

Exemple #2 sapi_windows_vt100_support() changing state

Vous ne pourrez pas activer la fonctionnalité VT100 de `STDOUT` ou `STDERR` si le flux est redirigé.

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

Résultat de l'exemple ci-dessus est similaire à :

    true false

Exemple #3 Example usage of VT100 support enabled

`<?php
$out = fopen('php://stdout','w');
fwrite($out, 'Just forgot a lettr.');
// bouge le curseur de deux caractères en arrière
fwrite($out, "\033[2D");
// Insère un blanc, décalant le texte existant vers la droite -> Just forgot a lett r.
fwrite($out, "\033[1@");
fwrite($out, 'e');
?>`

L'exemple ci-dessus va afficher :

    Just forgot a letter.