Annotation of embedaddon/php/ext/standard/tests/filters/read.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: stream filter - reading
! 3: --FILE--
! 4: <?php
! 5: echo "-TEST\n";
! 6: class filter extends php_user_filter {
! 7: function filter($in, $out, &$consumed, $closing)
! 8: {
! 9: $output = 0;
! 10: while ($bucket = stream_bucket_make_writeable($in)) {
! 11: $bucket->data = strtoupper($bucket->data);
! 12: $consumed += $bucket->datalen;
! 13: stream_bucket_append($out, $bucket);
! 14: $output = 1;
! 15: }
! 16: if ($closing) {
! 17: $bucket = stream_bucket_new($this->stream, "\n===close===\n");
! 18: stream_bucket_append($out, $bucket);
! 19: $output = 1;
! 20: }
! 21: return $output ? PSFS_PASS_ON : PSFS_FEED_ME;
! 22: }
! 23: }
! 24: stream_filter_register("strtoupper", "filter")
! 25: or die("Failed to register filter");
! 26:
! 27: if ($f = fopen(__FILE__, "rb")) {
! 28: stream_filter_append($f, "strtoupper");
! 29: while (!feof($f)) {
! 30: echo fread($f, 8192);
! 31: }
! 32: fclose($f);
! 33: }
! 34: echo "Done\n";
! 35: ?>
! 36: --EXPECTF--
! 37: %sTEST
! 38: <?PHP
! 39: ECHO "-TEST\N";
! 40: CLASS FILTER EXTENDS PHP_USER_FILTER {
! 41: FUNCTION FILTER($IN, $OUT, &$CONSUMED, $CLOSING)
! 42: {
! 43: $OUTPUT = 0;
! 44: WHILE ($BUCKET = STREAM_BUCKET_MAKE_WRITEABLE($IN)) {
! 45: $BUCKET->DATA = STRTOUPPER($BUCKET->DATA);
! 46: $CONSUMED += $BUCKET->DATALEN;
! 47: STREAM_BUCKET_APPEND($OUT, $BUCKET);
! 48: $OUTPUT = 1;
! 49: }
! 50: IF ($CLOSING) {
! 51: $BUCKET = STREAM_BUCKET_NEW($THIS->STREAM, "\N===CLOSE===\N");
! 52: STREAM_BUCKET_APPEND($OUT, $BUCKET);
! 53: $OUTPUT = 1;
! 54: }
! 55: RETURN $OUTPUT ? PSFS_PASS_ON : PSFS_FEED_ME;
! 56: }
! 57: }
! 58: STREAM_FILTER_REGISTER("STRTOUPPER", "FILTER")
! 59: OR DIE("FAILED TO REGISTER FILTER");
! 60:
! 61: IF ($F = FOPEN(__FILE__, "RB")) {
! 62: STREAM_FILTER_APPEND($F, "STRTOUPPER");
! 63: WHILE (!FEOF($F)) {
! 64: ECHO FREAD($F, 8192);
! 65: }
! 66: FCLOSE($F);
! 67: }
! 68: ECHO "DONE\N";
! 69: ?>
! 70:
! 71: ===close===
! 72: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>