-
Notifications
You must be signed in to change notification settings - Fork 152
/
stream-filter-append.xml
197 lines (181 loc) · 6.16 KB
/
stream-filter-append.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
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
189
190
191
192
193
194
195
196
197
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: e41806c30bf6975e452c0d4ce35ab0984c2fa68c Maintainer: yannick Status: ready -->
<!-- Reviewed: yes -->
<refentry xml:id="function.stream-filter-append" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>stream_filter_append</refname>
<refpurpose>Attache un filtre à un flux en fin de liste</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>resource</type><methodname>stream_filter_append</methodname>
<methodparam><type>resource</type><parameter>stream</parameter></methodparam>
<methodparam><type>string</type><parameter>filtername</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>read_write</parameter></methodparam>
<methodparam choice="opt"><type>mixed</type><parameter>params</parameter></methodparam>
</methodsynopsis>
<para>
<function>stream_filter_append</function> ajoute le filtre
<parameter>filtername</parameter> à la liste de filtres attachés au
flux <parameter>stream</parameter>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>stream</parameter></term>
<listitem>
<para>
Le flux cible.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>filtername</parameter></term>
<listitem>
<para>
Le nom du filtre.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>read_write</parameter></term>
<listitem>
<para>
Par défaut, <function>stream_filter_append</function> va ajouter
le filtre à la liste de filtres de lecture si le fichier a été ouvert
en mode lecture (<literal>r</literal> et/ou <literal>+</literal>). Le
filtre sera aussi attaché à la liste des filtres de lecture
si le fichier a été ouvert en mode lecture (<literal>w</literal>,
<literal>a</literal> et/ou <literal>+</literal>).
<constant>STREAM_FILTER_READ</constant>,
<constant>STREAM_FILTER_WRITE</constant>, et/ou
<constant>STREAM_FILTER_ALL</constant> peuvent aussi être utilisées
dans le paramètre <parameter>read_write</parameter> pour contrôler
ce comportement.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>params</parameter></term>
<listitem>
<para>
Ce filtre sera ajouté avec les paramètres
<parameter>params</parameter> à la <emphasis>fin</emphasis> de
la liste des filtres, et sera ainsi appelé à la fin des
opérations de filtres. Pour ajouter un filtre au début
de la liste, utilisez la fonction
<function>stream_filter_prepend</function>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Retourne une ressource en cas de succès, ou &false; si une erreur survient.
La ressource peut être utilisée pour se référer à l'instance de ce filtre
lors d'un appel à la fonction <function>stream_filter_remove</function>.
</para>
<para>
&false; est retourné si <parameter>stream</parameter> n'est pas une ressource
ou si <parameter>filtername</parameter> ne peut être atteint.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Contrôler l'application des filtres</title>
<programlisting role="php">
<![CDATA[
<?php
// Ouverture d'un fichier de test en lecture/écriture
$fp = fopen('test.txt', 'w+');
/* On applique le filtre ROT13 au flux d'écriture, mais pas à
* celui de lecture */
stream_filter_append($fp, "string.rot13", STREAM_FILTER_WRITE);
/* On ajoute un simple chaîne dans le fichier, il sera
* transformé par ROT13 à l'écriture */
fwrite($fp, "Ceci est un test\n");
/* On revient au début du fichier */
rewind($fp);
/* On lit le contenu du fichier.
* Si on appliquait le filtre ROT13 nous aurions la
* chaîne dans son étât d'origine */
fpassthru($fp);
fclose($fp);
/* Résultat attendu
----------------
Guvf vf n grfg
*/
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<title>Quand vous utilisez des filtres personnalisés</title>
<simpara>
<function>stream_register_filter</function> doit être appelée avant
<function>stream_filter_append</function> pour enregistrer le filtre
sous le nom de <parameter>filtername</parameter>.
</simpara>
</note>
<note>
<simpara>
Les données du flux (locales et distantes) sont retournées en morceaux,
les données non acheminées étant conservées dans le tampon interne.
Lorsqu'un nouveau filtre est ajouté à la fin du flux, les données dans
le tampon interne sont passées dans le nouveau filtre à ce moment-là.
Ceci est différent du comportement de
<function>stream_filter_prepend</function>.
</simpara>
</note>
<note>
<simpara>
Quand un filtre est ajouté pour la lecture et l'écriture, deux instances
du filtres sont créées. <function>stream_filter_prepend</function> doit être
appelée deux fois avec <constant>STREAM_FILTER_READ</constant> et
<constant>STREAM_FILTER_WRITE</constant> pour obtenir les ressources de filtres.
</simpara>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<simplelist>
<member><function>stream_filter_register</function></member>
<member><function>stream_filter_prepend</function></member>
<member><function>stream_get_filters</function></member>
</simplelist>
</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
-->