You are here

final class RelativeStream in Zircon Profile 8.0

Same name and namespace in other branches
  1. 8 vendor/zendframework/zend-diactoros/src/RelativeStream.php \Zend\Diactoros\RelativeStream

Class RelativeStream

Wrapper for default Stream class, representing subpart (starting from given offset) of initial stream. It can be used to avoid copying full stream, conserving memory. @example see Zend\Diactoros\AbstractSerializer::splitStream()

Hierarchy

Expanded class hierarchy of RelativeStream

File

vendor/zendframework/zend-diactoros/src/RelativeStream.php, line 21

Namespace

Zend\Diactoros
View source
final class RelativeStream implements StreamInterface {

  /**
   * @var StreamInterface
   */
  private $decoratedStream;

  /**
   * @var int
   */
  private $offset;

  /**
   * Class constructor
   *
   * @param StreamInterface $decoratedStream
   * @param int $offset
   */
  public function __construct(StreamInterface $decoratedStream, $offset) {
    $this->decoratedStream = $decoratedStream;
    $this->offset = (int) $offset;
  }

  /**
   * {@inheritdoc}
   */
  public function __toString() {
    $this
      ->seek(0);
    return $this
      ->getContents();
  }

  /**
   * {@inheritdoc}
   */
  public function close() {
    $this->decoratedStream
      ->close();
  }

  /**
   * {@inheritdoc}
   */
  public function detach() {
    return $this->decoratedStream
      ->detach();
  }

  /**
   * {@inheritdoc}
   */
  public function getSize() {
    return $this->decoratedStream
      ->getSize() - $this->offset;
  }

  /**
   * {@inheritdoc}
   */
  public function tell() {
    return $this->decoratedStream
      ->tell() - $this->offset;
  }

  /**
   * {@inheritdoc}
   */
  public function eof() {
    return $this->decoratedStream
      ->eof();
  }

  /**
   * {@inheritdoc}
   */
  public function isSeekable() {
    return $this->decoratedStream
      ->isSeekable();
  }

  /**
   * {@inheritdoc}
   */
  public function seek($offset, $whence = SEEK_SET) {
    if ($whence == SEEK_SET) {
      return $this->decoratedStream
        ->seek($offset + $this->offset, $whence);
    }
    return $this->decoratedStream
      ->seek($offset, $whence);
  }

  /**
   * {@inheritdoc}
   */
  public function rewind() {
    return $this
      ->seek(0);
  }

  /**
   * {@inheritdoc}
   */
  public function isWritable() {
    return $this->decoratedStream
      ->isWritable();
  }

  /**
   * {@inheritdoc}
   */
  public function write($string) {
    return $this->decoratedStream
      ->write($string);
  }

  /**
   * {@inheritdoc}
   */
  public function isReadable() {
    return $this->decoratedStream
      ->isReadable();
  }

  /**
   * {@inheritdoc}
   */
  public function read($length) {
    return $this->decoratedStream
      ->read($length);
  }

  /**
   * {@inheritdoc}
   */
  public function getContents() {
    return $this->decoratedStream
      ->getContents();
  }

  /**
   * {@inheritdoc}
   */
  public function getMetadata($key = null) {
    return $this->decoratedStream
      ->getMetadata($key);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
RelativeStream::$decoratedStream private property
RelativeStream::$offset private property
RelativeStream::close public function Closes the stream and any underlying resources. Overrides StreamInterface::close
RelativeStream::detach public function Separates any underlying resources from the stream. Overrides StreamInterface::detach
RelativeStream::eof public function Returns true if the stream is at the end of the stream. Overrides StreamInterface::eof
RelativeStream::getContents public function Returns the remaining contents in a string Overrides StreamInterface::getContents
RelativeStream::getMetadata public function Get stream metadata as an associative array or retrieve a specific key. Overrides StreamInterface::getMetadata
RelativeStream::getSize public function Get the size of the stream if known. Overrides StreamInterface::getSize
RelativeStream::isReadable public function Returns whether or not the stream is readable. Overrides StreamInterface::isReadable
RelativeStream::isSeekable public function Returns whether or not the stream is seekable. Overrides StreamInterface::isSeekable
RelativeStream::isWritable public function Returns whether or not the stream is writable. Overrides StreamInterface::isWritable
RelativeStream::read public function Read data from the stream. Overrides StreamInterface::read
RelativeStream::rewind public function Seek to the beginning of the stream. Overrides StreamInterface::rewind
RelativeStream::seek public function Seek to a position in the stream. Overrides StreamInterface::seek
RelativeStream::tell public function Returns the current position of the file read/write pointer Overrides StreamInterface::tell
RelativeStream::write public function Write data to the stream. Overrides StreamInterface::write
RelativeStream::__construct public function Class constructor
RelativeStream::__toString public function Reads all data from the stream into a string, from the beginning to end. Overrides StreamInterface::__toString