-
Notifications
You must be signed in to change notification settings - Fork 46
/
Copy pathreadline-callback-handler-install.xml
142 lines (130 loc) · 3.82 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
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 2ab6e3ff1677d26786a443fa370719bfb4eba9cb Maintainer: sammywg Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.readline-callback-handler-install" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>readline_callback_handler_install</refname>
<refpurpose>Initialisiert das readline-Callback-Interface und das Terminal,
gibt den Prompt aus und springt direkt zurück</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>true</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>
Initialisiert ein readline-Callback-Interface, gibt danach den
<parameter>prompt</parameter> aus und springt direkt zurück. Der doppelte
Aufruf der Funktion ohne Zurücksetzen des verwendeten Callback-Interfaces
wird automatisch und in geeigneter Weise das alte Interface überschreiben.
</para>
<para>
Die Callback-Fähigkeiten sind hilfreich, wenn sie mit
<function>stream_select</function> kombiniert werden, da dies eine
Verschränkung von IO und Benutzereingaben wie mittels <function>readline</function>
ermöglicht.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>prompt</parameter></term>
<listitem>
<para>
Die Prompt-Message.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>callback</parameter></term>
<listitem>
<para>
Die <parameter>callback</parameter>-Funktion benötigt einen Parameter;
die Benutzereingabe wird zurückgegeben.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.true.always;
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Readline-Callback-Interface-Beispiel</title>
<programlisting role="php">
<![CDATA[
<?php
function rl_callback($ret)
{
global $c, $prompting;
echo "Sie haben eingegeben: $ret\n";
$c++;
if ($c > 10) {
$prompting = false;
readline_callback_handler_remove();
} else {
readline_callback_handler_install("[$c] Geben Sie etwas ein: ", 'rl_callback');
}
}
$c = 1;
$prompting = true;
readline_callback_handler_install("[$c] Geben Sie etwas ein: ", 'rl_callback');
while ($prompting) {
$w = NULL;
$e = NULL;
$n = stream_select($r = array(STDIN), $w, $e, null);
if ($n && in_array(STDIN, $r)) {
// Liest das aktuelle Zeichen und ruft die Callbackfunktion auf, wenn ein
// Newline-Zeichen eingegeben wurde
readline_callback_read_char();
}
}
echo "Eingabe deaktiviert. Komplett ausgeführt.\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
-->