(PHP 5, PHP 7, PHP 8)
php_user_filter::filter — フィルタを適用するときにコールされる
$in
,$out
,&$consumed
,$closing
このメソッドがコールされるのは、アタッチしたストリームとの間で (fread() や fwrite() による) データの読み書きを行ったときです。
in
in
は バケット群
を指すリソースで、
この中には一つあるいは複数の バケット
オブジェクトが含まれています。
このオブジェクトに、フィルタ対象のデータが含まれます。
out
out
はもう一つの バケット群
を指すリソースで、
変更した内容をここに保存します。
consumed
consumed
は常に参照渡しとする必要があります。
フィルタで読み込んだり変更したりしたデータの長さをここで加算します。
大半の場合、各 $bucket
上で
$bucket->datalen
をコールするたびに
consumed
を増やすことになります。
closing
ストリームが終了処理の最中である場合
(つまり、フィルタチェインの最後の処理を行っている場合)
に、closing
パラメータが true
となります。
filter() メソッドは、処理を終えたときに次のいずれかの値を返す必要があります。
戻り値 | 意味 |
---|---|
PSFS_PASS_ON |
フィルタの処理が成功し、データが
out バケット群
に保存されました。
|
PSFS_FEED_ME |
フィルタの処理は成功しましたが、返すデータはありません。 ストリームあるいは一つ前のフィルタから、さらにデータが必要です。 |
PSFS_ERR_FATAL (デフォルト) |
フィルタで対処不能なエラーが発生し、処理を続行できません。 |