php-src/ext/standard/tests/filters/read.phpt
2006-04-20 17:43:18 +00:00

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