-
Notifications
You must be signed in to change notification settings - Fork 80
Expand file tree
/
Copy pathsapi-windows-vt100-support.xml
More file actions
188 lines (183 loc) · 7.3 KB
/
sapi-windows-vt100-support.xml
File metadata and controls
188 lines (183 loc) · 7.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 426d9a8f156bca7be9cb5475e24ba104ee814bc1 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.sapi-windows-vt100-support" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>sapi_windows_vt100_support</refname>
<refpurpose>Получить или установить поддержку VT100 для заданного потока, связанного с буфером вывода консоли Windows</refpurpose>
</refnamediv>
<refsect1 role="description"><!-- {{{ -->
&reftitle.description;
<methodsynopsis>
<type>bool</type><methodname>sapi_windows_vt100_support</methodname>
<methodparam><type>resource</type><parameter>stream</parameter></methodparam>
<methodparam choice="opt"><type class="union"><type>bool</type><type>null</type></type><parameter>enable</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
Если параметр <parameter>enable</parameter> равен &null;, функция возвращает &true;
или &false; в зависимости от того, разрешены или нет управляющие последовательности VT100
для <parameter>stream</parameter>
</para>
<para>
Если параметр <parameter>enable</parameter> является логическим значением (<type>bool</type>), функция попытается включить или
выключить функциональность VT100 для потока <parameter>stream</parameter>.
В этом случае функция вернёт &true; или &false; в зависимости от успешности выполнения.
</para>
<para>
При старте, PHP пытается включить VT100 для потоков
<constant>STDOUT</constant> и <constant>STDERR</constant>. Но если, например,
эти потоки перенаправлены в файл, то поддержка VT100 может не включиться.
</para>
<para>
Если включена поддержка VT100, то можно использовать управляющие последовательности, так
как они известны терминалу.
Они позволяют изменять вывод терминала. В Windows эти последовательности известны как
"Console Virtual Terminal Sequences".
</para>
<warning>
<simpara>
Эта функция использует реализацию флага
<constant>ENABLE_VIRTUAL_TERMINAL_PROCESSING</constant> в Windows 10 API,
следовательно функциональность VT100 может быть недоступна в более старых версиях Windows.
</simpara>
</warning>
</refsect1><!-- }}} -->
<refsect1 role="parameters"><!-- {{{ -->
&reftitle.parameters;
<variablelist>
<varlistentry>
<term><parameter>stream</parameter></term>
<listitem>
<para>
Поток, с которым будет работать функция.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>enable</parameter></term>
<listitem>
<para>
Если является логическим значением (<type>bool</type>), то должно быть либо &true;, либо &false;, для включения и отключения VT100 соответственно.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1><!-- }}} -->
<refsect1 role="returnvalues"><!-- {{{ -->
&reftitle.returnvalues;
<para>
Если параметр <parameter>enable</parameter> равен &null;, функция возвращает &true;
или &false; в зависимости от того, разрешены или нет управляющие последовательности VT100
</para>
<para>
Если параметр <parameter>enable</parameter> является логическим значением (<type>bool</type>): &return.success;
</para>
</refsect1><!-- }}} -->
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.0.0</entry>
<entry>
<parameter>enable</parameter> теперь допускает значение null.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples"><!-- {{{ -->
&reftitle.examples;
<example>
<title>Состояние <function>sapi_windows_vt100_support</function> по умолчанию</title>
<para>
По умолчанию, для <constant>STDOUT</constant> и <constant>STDERR</constant>
поддержка VT100 включена.
</para>
<programlisting role="sh">
php -r "var_export(sapi_windows_vt100_support(STDOUT));echo ' ';var_export(sapi_windows_vt100_support(STDERR));"
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
true true
]]>
</screen>
<para>
Если поток перенаправлен, то поддержка VT100 будет отключена:
</para>
<programlisting role="sh">
php -r "var_export(sapi_windows_vt100_support(STDOUT));echo ' ';var_export(sapi_windows_vt100_support(STDERR));" 2>NUL
</programlisting>
&example.outputs.similar;
<screen>
true false
</screen>
</example>
<example>
<title>Изменение состояния с помощью <function>sapi_windows_vt100_support</function></title>
<para>
Вы не можете включить поддержку VT100 для <constant>STDOUT</constant> или <constant>STDERR</constant> если эти потоки перенаправлены.
</para>
<programlisting role="sh">
php -r "var_export(sapi_windows_vt100_support(STDOUT, true));echo ' ';var_export(sapi_windows_vt100_support(STDERR, true));" 2>NUL
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
true false
]]>
</screen>
</example>
<example>
<title>Пример использования с поддержкой VT100</title>
<programlisting role="php">
<![CDATA[
<?php
$out = fopen('php://stdout','w');
fwrite($out, 'Just forgot a lettr.');
// Переместить курсор на две позиции назад
fwrite($out, "\033[2D");
// Вставляет один пробел, сдвигая существующий текст вправо -> Просто забыли букву.
fwrite($out, "\033[1@");
fwrite($out, 'e');
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Just forgot a letter.
]]>
</screen>
</example>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->