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

# 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

function 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ésormais nullable.

### Exemples

Exemple #1 Etat par défaut 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 Changement d'état de sapi_windows_vt100_support()

Il ne sera pas possible d'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 Exemple d'utilisation avec le support VT100 activé

    <?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.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open