mirror of
https://github.com/php/php-src.git
synced 2024-10-21 16:33:44 +00:00
73 lines
1.8 KiB
PHP
73 lines
1.8 KiB
PHP
--TEST--
|
|
stream filter - reading
|
|
--FILE--
|
|
<?php
|
|
echo "-TEST\n";
|
|
class filter extends php_user_filter {
|
|
function filter($in, $out, &$consumed, $closing)
|
|
{
|
|
$output = 0;
|
|
while ($bucket = stream_bucket_make_writeable($in)) {
|
|
$bucket->data = strtoupper($bucket->data);
|
|
$consumed += $bucket->datalen;
|
|
stream_bucket_append($out, $bucket);
|
|
$output = 1;
|
|
}
|
|
if ($closing) {
|
|
$bucket = stream_bucket_new($this->stream, "\n===close===\n");
|
|
stream_bucket_append($out, $bucket);
|
|
$output = 1;
|
|
}
|
|
return $output ? PSFS_PASS_ON : PSFS_FEED_ME;
|
|
}
|
|
}
|
|
stream_filter_register("strtoupper", "filter")
|
|
or die("Failed to register filter");
|
|
|
|
if ($f = fopen(__FILE__, "rb")) {
|
|
stream_filter_append($f, "strtoupper");
|
|
while (!feof($f)) {
|
|
echo fread($f, 8192);
|
|
}
|
|
fclose($f);
|
|
}
|
|
echo "Done\n";
|
|
?>
|
|
--EXPECTF--
|
|
%sTEST
|
|
<?PHP
|
|
ECHO "-TEST\N";
|
|
CLASS FILTER EXTENDS PHP_USER_FILTER {
|
|
FUNCTION FILTER($IN, $OUT, &$CONSUMED, $CLOSING)
|
|
{
|
|
$OUTPUT = 0;
|
|
WHILE ($BUCKET = STREAM_BUCKET_MAKE_WRITEABLE($IN)) {
|
|
$BUCKET->DATA = STRTOUPPER($BUCKET->DATA);
|
|
$CONSUMED += $BUCKET->DATALEN;
|
|
STREAM_BUCKET_APPEND($OUT, $BUCKET);
|
|
$OUTPUT = 1;
|
|
}
|
|
IF ($CLOSING) {
|
|
$BUCKET = STREAM_BUCKET_NEW($THIS->STREAM, "\N===CLOSE===\N");
|
|
STREAM_BUCKET_APPEND($OUT, $BUCKET);
|
|
$OUTPUT = 1;
|
|
}
|
|
RETURN $OUTPUT ? PSFS_PASS_ON : PSFS_FEED_ME;
|
|
}
|
|
}
|
|
STREAM_FILTER_REGISTER("STRTOUPPER", "FILTER")
|
|
OR DIE("FAILED TO REGISTER FILTER");
|
|
|
|
IF ($F = FOPEN(__FILE__, "RB")) {
|
|
STREAM_FILTER_APPEND($F, "STRTOUPPER");
|
|
WHILE (!FEOF($F)) {
|
|
ECHO FREAD($F, 8192);
|
|
}
|
|
FCLOSE($F);
|
|
}
|
|
ECHO "DONE\N";
|
|
?>
|
|
|
|
===close===
|
|
Done
|