<?php
class UppercaseFilter extends php_user_filter {
public function filter($in, $out, &$consumed, $closing) {
while ($bucket = stream_bucket_make_writeable($in)) {
$bucket->data = strtoupper($bucket->data);
$consumed += $bucket->datalen;
stream_bucket_append($out, $bucket);
}
return PSFS_PASS_ON;
}
}
stream_filter_register('uppercase', UppercaseFilter::class);
$fp = fopen('php://temp', 'w+');
stream_filter_append($fp, 'uppercase');
fwrite($fp, "hello\n");
rewind($fp);
echo stream_get_contents($fp);
Repro (php-src-strict)
Zend expected
HELLO(plus newline)php-compiler current
LogicExceptionlike:stream_filter_append(): user filter "uppercase" is not implemented in this compiler buildphp-src reference
ext/standard/streamsfuncs.c(stream_filter_append/stream_filter_prepend)main/streams/filter.c(user filter plumbing)Done when
HELLO.test/compliance/covering user filter registration + append/prepend.