5 class Binify extends \php_user_filter
9 public function onCreate()
14 public function filter($in, $out, &$consumed, $closing)
18 $bucket = stream_bucket_make_writeable($in);
20 $this->buffer .= $bucket->data;
24 $available = strlen($this->buffer);
25 if ($available >= 2) {
26 $consume = $available - ($available % 2);
27 $data = substr($this->buffer, 0, $consume);
29 if (strspn($data,
'1234567890abcdefABCDEF') !== $consume) {
31 throw new \RuntimeException(
'Invalid data in input');
34 $outBucket = stream_bucket_new($this->stream, pack(
'H*', $data));
35 stream_bucket_append($out, $outBucket);
37 $this->buffer = (string) substr($this->buffer, $consume);
38 $consumed += $consume;
43 if ($closing && $this->buffer !==
'') {
45 throw new \RuntimeException(
'Odd number of bytes in input');