-
Notifications
You must be signed in to change notification settings - Fork 79
/
Copy pathreadline-callback-handler-install.xml
145 lines (132 loc) · 4.05 KB
/
readline-callback-handler-install.xml
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
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 5106807f258ed4b465f89b9faf4375f628e02b98 Maintainer: takagi Status: ready -->
<refentry xml:id="function.readline-callback-handler-install" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>readline_callback_handler_install</refname>
<refpurpose>
readline コールバックインターフェイスと端末を初期化し、
プロンプトを表示して結果をすぐに返す
</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>bool</type><methodname>readline_callback_handler_install</methodname>
<methodparam><type>string</type><parameter>prompt</parameter></methodparam>
<methodparam><type>callable</type><parameter>callback</parameter></methodparam>
</methodsynopsis>
<para>
readline コールバックインターフェイスを設定し、プロンプト
<parameter>prompt</parameter> を表示して入力を受け取ります。
コールバック関数 <parameter>callback</parameter> はひとつのパラメータを
とり、そこにはユーザーの入力内容が格納されます。一度登録したコールバック
インターフェイスを削除せずもういちどこの関数をコールした場合、もとの
インターフェイスは自動的に上書きされます。
</para>
<para>
コールバック機能は <function>stream_select</function> と組み合わせると
有用です。これは <function>readline</function> とは異なり、
IO とユーザーの入力を交互に取り扱います。
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>prompt</parameter></term>
<listitem>
<para>
確認メッセージ。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>callback</parameter></term>
<listitem>
<para>
<parameter>callback</parameter> 関数が受け取るパラメータはひとつで、
ユーザーから返された入力です。
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.success;
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Readline コールバックインターフェイスの例</title>
<programlisting role="php">
<![CDATA[
<?php
function rl_callback($ret)
{
global $c, $prompting;
echo "You entered: $ret\n";
$c++;
if ($c > 10) {
$prompting = false;
readline_callback_handler_remove();
} else {
readline_callback_handler_install("[$c] Enter something: ", 'rl_callback');
}
}
$c = 1;
$prompting = true;
readline_callback_handler_install("[$c] Enter something: ", 'rl_callback');
while ($prompting) {
$w = NULL;
$e = NULL;
$n = stream_select($r = array(STDIN), $w, $e, null);
if ($n && in_array(STDIN, $r)) {
// read a character, will call the callback when a newline is entered
readline_callback_read_char();
}
}
echo "Prompting disabled. All done.\n";
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>readline_callback_handler_remove</function></member>
<member><function>readline_callback_read_char</function></member>
<member><function>stream_select</function></member>
</simplelist>
</para>
</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
-->