callback = $callback; } public function write($data) { $this->offset += strlen($data); $this->stream .= $data; if ($this->callback !== null) { call_user_func($this->callback, $this); } return strlen($data); } public function read() { $data = $this->stream; $this->stream = ''; return $data; } public function offset() { return $this->offset; } public function close() { if ($this->callback !== null) { call_user_func($this->callback, $this); } } } }