<?php
class Parser
{
private $chunkSize;
private $buffer = '';
private $callback;
public function __construct($chunkSize)
{
$this->chunkSize = $chunkSize;
}
public function onChunk($callback)
{
$this->callback = $callback;
}
public function parse($data)
{
$this->buffer .= $data;
while (strlen($this->buffer) >= $this->chunkSize) {
$chunk = (string)substr($this->buffer, 0, $this->chunkSize);
$this->buffer = (string)substr($this->buffer, $this->chunkSize);
call_user_func($this->callback, $chunk);
}
}
}
$p = new Parser(43);
$p->onChunk(function($data) {
echo "Got chunk of data: {$data}\n";
});
$p->parse('The quick brown fox jumps over the lazy dogThe quick brown fox');
$p->parse(' jum');
$p->parse('ps');
$p->parse(' over the lazy dogThe quick brown fox jumps ');
$p->parse('over the lazy dog');
Got chunk of data: The quick brown fox jumps over the lazy dog
Got chunk of data: The quick brown fox jumps over the lazy dog
Got chunk of data: The quick brown fox jumps over the lazy dog
Output for 5.1.0 - 5.1.6, 5.2.0 - 5.2.17
Parse error: syntax error, unexpected T_FUNCTION, expecting ')' in /in/T01sM on line 35
Process exited with code 255.
Output for 5.0.0 - 5.0.5
Parse error: parse error, unexpected T_FUNCTION, expecting ')' in /in/T01sM on line 35
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/T01sM on line 5
Process exited with code 255.
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/T01sM on line 5
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in /in/T01sM on line 5
Process exited with code 255.