<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.misc.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'function.sapi-windows-vt100-support.php',
    1 => 'sapi_windows_vt100_support',
    2 => 'Obtiene o define el soporte VT100 para el flujo especificado asociado a un b&uacute;fer de salida de una consola Windows.',
  ),
  'up' => 
  array (
    0 => 'ref.misc.php',
    1 => 'Funciones Varias',
  ),
  'prev' => 
  array (
    0 => 'function.sapi-windows-set-ctrl-handler.php',
    1 => 'sapi_windows_set_ctrl_handler',
  ),
  'next' => 
  array (
    0 => 'function.show-source.php',
    1 => 'show_source',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'reference/misc/functions/sapi-windows-vt100-support.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.sapi-windows-vt100-support" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">sapi_windows_vt100_support</h1>
  <p class="verinfo">(PHP 7 &gt;= 7.2.0, PHP 8)</p><p class="refpurpose"><span class="refname">sapi_windows_vt100_support</span> &mdash; <span class="dc-title">Obtiene o define el soporte VT100 para el flujo especificado asociado a un búfer de salida de una consola Windows.</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.sapi-windows-vt100-support-description">
  <h3 class="title">Descripción</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>sapi_windows_vt100_support</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span> <code class="parameter">$stream</code></span>, <span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.php" class="type null">?</a></span><span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></span> <code class="parameter">$enable</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>

  <p class="para rdfs-comment">
   Si <code class="parameter">enable</code> es <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>, la función retorna <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> si el flujo <code class="parameter">stream</code> tiene los códigos de control VT100 activados, de lo contrario <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
  </p>
  <p class="para">
   Si <code class="parameter">enable</code> es un <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>, la función intentará activar o desactivar las funcionalidades VT100 del flujo <code class="parameter">stream</code>.
   Si la funcionalidad ha sido activada (o desactivada) con éxito, la función retornará <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>, o <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> en caso contrario.
  </p>
  <p class="para">
   Al inicio, PHP intenta activar la funcionalidad VT100 de los flujos <strong><code><a href="reserved.constants.php#constant.stdout">STDOUT</a></code></strong>/<strong><code><a href="reserved.constants.php#constant.stderr">STDERR</a></code></strong>. Por cierto, si estos flujos son redirigidos a un fichero, las funcionalidades VT100 pueden no ser activadas.
  </p>
  <p class="para">
   Si el soporte VT100 está activado, es posible utilizar secuencias de control tal como son conocidas por el terminal VT100.
   Estas permiten la modificación de la salida del terminal. En Windows, estas secuencias son llamadas secuencias de terminal virtual de consola (Console Virtual Terminal Sequences).
  </p>
  <div class="warning"><strong class="warning">Advertencia</strong>
   <p class="simpara">
    Esta función utiliza el flag <strong><code>ENABLE_VIRTUAL_TERMINAL_PROCESSING</code></strong> implementado en la API de Windows 10, por lo que la funcionalidad VT100 puede no estar disponible en versiones antiguas de Windows.
   </p>
  </div>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.sapi-windows-vt100-support-parameters">
  <h3 class="title">Parámetros</h3>
  <dl>
   
    <dt><code class="parameter">stream</code></dt>
    <dd>
     <p class="para">
      El flujo sobre el cual la función operará.
     </p>
    </dd>
   
   
    <dt><code class="parameter">enable</code></dt>
    <dd>
     <p class="para">
      Si es <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>, la funcionalidad VT100 será activada (si es <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>) o desactivada (si es <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>).
     </p>
    </dd>
   
  </dl>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.sapi-windows-vt100-support-returnvalues">
  <h3 class="title">Valores devueltos</h3>
  <p class="para">
   Si <code class="parameter">enable</code> es <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>: retorna <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> si la funcionalidad VT100 está activada, de lo contrario <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
  </p>
  <p class="para">
   Si <code class="parameter">enable</code> es un <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>: Esta función retorna <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> en caso de éxito o <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> si ocurre un error.
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-function.sapi-windows-vt100-support-changelog">
  <h3 class="title">Historial de cambios</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Versión</th>
      <th>Descripción</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.0.0</td>
      <td>
       <code class="parameter">enable</code> ahora es nullable.
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 examples" id="refsect1-function.sapi-windows-vt100-support-examples">
  <h3 class="title">Ejemplos</h3>
  <div class="example" id="example-1">
   <p><strong>Ejemplo #1 Estado por defecto de <span class="function"><strong>sapi_windows_vt100_support()</strong></span></strong></p>
   <div class="example-contents"><p>
    Por omisión, <strong><code><a href="reserved.constants.php#constant.stdout">STDOUT</a></code></strong> y <strong><code><a href="reserved.constants.php#constant.stderr">STDERR</a></code></strong> tienen la funcionalidad VT100 activada.
   </p></div>
   <div class="example-contents"><div class="shcode"><pre class="shcode">php -r &quot;var_export(sapi_windows_vt100_support(STDOUT));echo &#039; &#039;;var_export(sapi_windows_vt100_support(STDERR));&quot;</pre>
</div></div>

   <div class="example-contents"><p>Resultado del ejemplo anterior es similar a:</p></div>
   <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">true true</pre>
</div>
   </div>
   <div class="example-contents"><p>
    Además, si un flujo es redirigido, la funcionalidad VT100 no será activada:
   </p></div>
   <div class="example-contents"><div class="shcode"><pre class="shcode">php -r &quot;var_export(sapi_windows_vt100_support(STDOUT));echo &#039; &#039;;var_export(sapi_windows_vt100_support(STDERR));&quot; 2&gt;NUL</pre>
</div></div>

   <div class="example-contents"><p>Resultado del ejemplo anterior es similar a:</p></div>
   <div class="example-contents screen"><br />
    true false<br />
   </div>
  </div>
  <div class="example" id="example-2">
   <p><strong>Ejemplo #2 <span class="function"><strong>sapi_windows_vt100_support()</strong></span> cambiando el estado</strong></p>
   <div class="example-contents"><p>
    No será posible activar la funcionalidad VT100 de <strong><code><a href="reserved.constants.php#constant.stdout">STDOUT</a></code></strong> o <strong><code><a href="reserved.constants.php#constant.stderr">STDERR</a></code></strong> si el flujo es redirigido.
   </p></div>
   <div class="example-contents"><div class="shcode"><pre class="shcode">php -r &quot;var_export(sapi_windows_vt100_support(STDOUT, true));echo &#039; &#039;;var_export(sapi_windows_vt100_support(STDERR, true));&quot; 2&gt;NUL</pre>
</div></div>

   <div class="example-contents"><p>Resultado del ejemplo anterior es similar a:</p></div>
   <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">true false</pre>
</div>
   </div>
  </div>
  <div class="example" id="example-3">
   <p><strong>Ejemplo #3 Ejemplo de uso con soporte VT100 activado</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$out </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">'php://stdout'</span><span style="color: #007700">,</span><span style="color: #DD0000">'w'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">fwrite</span><span style="color: #007700">(</span><span style="color: #0000BB">$out</span><span style="color: #007700">, </span><span style="color: #DD0000">'Just forgot a lettr.'</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">// mueve el cursor dos caracteres hacia atrás<br /></span><span style="color: #0000BB">fwrite</span><span style="color: #007700">(</span><span style="color: #0000BB">$out</span><span style="color: #007700">, </span><span style="color: #DD0000">"\033[2D"</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">// Inserta un espacio, desplazando el texto existente hacia la derecha -&gt; Just forgot a lett r.<br /></span><span style="color: #0000BB">fwrite</span><span style="color: #007700">(</span><span style="color: #0000BB">$out</span><span style="color: #007700">, </span><span style="color: #DD0000">"\033[1@"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">fwrite</span><span style="color: #007700">(</span><span style="color: #0000BB">$out</span><span style="color: #007700">, </span><span style="color: #DD0000">'e'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

    <div class="example-contents"><p>El ejemplo anterior mostrará:</p></div>
   <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">Just forgot a letter.</pre>
</div>
   </div>
  </div>
 </div>

</div><?php manual_footer($setup); ?>