stream_filter_prepend
フィルタをストリームに付加する
説明
resource stream_filter_prepend(
resource $stream
,
string $filtername
,
int $read_write
= ?,
mixed $params
= ?
)
パラメータ
-
stream
-
対象となるストリーム。
-
filtername
-
フィルタ名。
-
read_write
-
デフォルトでは、 stream_filter_prepend は
ストリームが読み込み用に開かれている場合は (つまり、オープンモードが
r
あるいは +
を伴う場合は)、
フィルタを リードフィルタチェイン
に追加し、
ストリームが書き出し用に開かれている場合は(つまり、オープンモードが
w
か a
か、あるいは+
を伴う場合は)、
ライトフィルターチェィン
にも追加します。
STREAM_FILTER_READ
・
STREAM_FILTER_WRITE
・
STREAM_FILTER_ALL
を read_write
パラメータに渡すことで、この挙動を変えることができます。
このパラメータを使った例については、
stream_filter_append を参照ください。
-
params
-
このフィルタは、指定された params
と共に、
リストの先頭に追加され、ストリームに対する操作の中で最初に呼び出されます。
フィルタをリストの末尾に加えたいときは、stream_filter_append
を使ってください。
戻り値
成功した場合にリソース、失敗した場合に false
を返します。
このリソースは、stream_filter_remove
をコールする際にこのフィルタインスタンスを参照するために使用可能です。
false
が返されるのは、stream
がリソースではない場合や
filtername
が見つからない場合です。
注意
注意:
カスタム(ユーザー)フィルタを使うには
カスタムフィルタを filtername
に指定するためには、
まず stream_filter_register 関数でそれを登録しておく
必要があります。
注意:
ストリームデータは(ローカルおよびリモートの)リソースからチャンク単位で
読み込まれ、内部バッファに保持されます。新しいフィルタがストリームに
追加されても、内部バッファにあるデータのうち既に他のフィルタの処理が
終わっているものは新しいフィルタでは処理されません。
これは stream_filter_apppend の挙動とは違います。
注意:
フィルタが読み込み用および書き込み用に追加されると、フィルタのインスタンスが
2 つ作成されます。両方のフィルタリソースを取得するには、
STREAM_FILTER_READ
と
STREAM_FILTER_WRITE
で
stream_filter_prepend を 2 回コールしなければなりません。
参考
- stream_filter_register
- stream_filter_append