* This file is part of the ManageWP Worker plugin.
* (c) ManageWP LLC <contact@managewp.com>
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
* Lazily open file stream for reading and close it when EOF is reached.
class MWP_Stream_LazyFile implements MWP_Stream_Interface
* @var MWP_Stream_Interface
private $initialized = false;
public function __construct($realPath)
$this->realPath = $realPath;
if ($this->stream !== null) {
if (!$this->initialized) {
return $this->stream !== null ? $this->stream->tell() : false;
public function isSeekable()
return $this->stream !== null ? $this->stream->isSeekable() : false;
public function seek($offset, $whence = SEEK_SET)
return $this->stream !== null ? $this->stream->seek($offset, $whence) : false;
return $this->stream !== null ? $this->stream->eof() : true;
public function read($length)
if ($this->stream === null) {
$data = $this->stream->read($length);
public function __toString()
$buffer .= $this->read(1048576);
private function initialize()
if ($this->initialized === false) {
if (file_exists($this->realPath)) {
$handle = @fopen($this->realPath, "rb");
$this->stream = MWP_Stream_Stream::factory($handle);
$this->initialized = true;