File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard / tests / filters / read.phpt
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:48:04 2012 UTC (12 years, 5 months ago) by misho
Branches: php, MAIN
CVS tags: v5_4_3elwix, v5_4_29p0, v5_4_29, v5_4_20p0, v5_4_20, v5_4_17p0, v5_4_17, v5_3_10, HEAD
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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>