-
Notifications
You must be signed in to change notification settings - Fork 715
/
stream-filter-prepend.xml
150 lines (144 loc) · 4.96 KB
/
stream-filter-prepend.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
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<refentry xml:id="function.stream-filter-prepend" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>stream_filter_prepend</refname>
<refpurpose>Attach a filter to a stream</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>resource</type><methodname>stream_filter_prepend</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>
Adds <parameter>filtername</parameter> to the list of filters
attached to <parameter>stream</parameter>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>stream</parameter></term>
<listitem>
<para>
The target stream.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>filtername</parameter></term>
<listitem>
<para>
The filter name.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>read_write</parameter></term>
<listitem>
<para>
By default, <function>stream_filter_prepend</function> will
attach the filter to the <literal>read filter chain</literal>
if the file was opened for reading (i.e. File Mode:
<literal>r</literal>, and/or <literal>+</literal>). The filter
will also be attached to the <literal>write filter chain</literal>
if the file was opened for writing (i.e. File Mode:
<literal>w</literal>, <literal>a</literal>, and/or <literal>+</literal>).
<constant>STREAM_FILTER_READ</constant>,
<constant>STREAM_FILTER_WRITE</constant>, and/or
<constant>STREAM_FILTER_ALL</constant> can also be passed to the
<parameter>read_write</parameter> parameter to override this behavior.
See <function>stream_filter_append</function> for an example of
using this parameter.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>params</parameter></term>
<listitem>
<para>
This filter will be added with the specified <parameter>params</parameter>
to the <emphasis>beginning</emphasis> of the list and will therefore be
called first during stream operations. To add a filter to the end of the
list, use <function>stream_filter_append</function>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Returns a resource on success or &false; on failure. The resource can be
used to refer to this filter instance during a call to
<function>stream_filter_remove</function>.
</para>
<para>
&false; is returned if <parameter>stream</parameter> is not a resource or
if <parameter>filtername</parameter> cannot be located.
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<title>When using custom (user) filters</title>
<simpara>
<function>stream_filter_register</function> must be called first
in order to register the desired user filter to <parameter>filtername</parameter>.
</simpara>
</note>
<note>
<simpara>
Stream data is read from resources (both local and remote) in chunks,
with any unconsumed data kept in internal buffers. When a new
filter is prepended to a stream, data in the internal buffers,
which has already been processed through other filters will
<emphasis>not</emphasis> be reprocessed through the new filter
at that time. This differs from the behavior of
<function>stream_filter_append</function>.
</simpara>
</note>
<note>
<simpara>
When a filter is added for read and write, two instances of the filter
are created. <function>stream_filter_prepend</function> must be called twice
with <constant>STREAM_FILTER_READ</constant> and
<constant>STREAM_FILTER_WRITE</constant> to get both filter resources.
</simpara>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<simplelist>
<member><function>stream_filter_register</function></member>
<member><function>stream_filter_append</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
-->