Return to read.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard / tests / filters |
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