stream_filter_prepend
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
stream_filter_prepend — フィルタをストリームに付加する
説明
resource
$stream
,string
$filtername
,int
$read_write
= ?,mixed
$params
= ?): resource
filtername
で指定されたフィルタを、
stream
に付加されているフィルタのリストに加えます。
パラメータ
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() - ストリームにフィルタを付加する