You are here

StringBasedFileContent.php in Zircon Profile 8

File

vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/content/StringBasedFileContent.php
View source
<?php

/**
 * This file is part of vfsStream.
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 *
 * @package  org\bovigo\vfs
 */
namespace org\bovigo\vfs\content;


/**
 * Default implementation for file contents based on simple strings.
 *
 * @since  1.3.0
 */
class StringBasedFileContent extends SeekableFileContent implements FileContent {

  /**
   * actual content
   *
   * @type  string
   */
  private $content;

  /**
   * constructor
   *
   * @param  string  $content
   */
  public function __construct($content) {
    $this->content = $content;
  }

  /**
   * returns actual content
   *
   * @return  string
   */
  public function content() {
    return $this->content;
  }

  /**
   * returns size of content
   *
   * @return  int
   */
  public function size() {
    return strlen($this->content);
  }

  /**
   * actual reading of length starting at given offset
   *
   * @param  int  $offset
   * @param  int  $count
   */
  protected function doRead($offset, $count) {
    return substr($this->content, $offset, $count);
  }

  /**
   * actual writing of data with specified length at given offset
   *
   * @param   string  $data
   * @param   int     $offset
   * @param   int     $length
   */
  protected function doWrite($data, $offset, $length) {
    $this->content = substr($this->content, 0, $offset) . $data . substr($this->content, $offset + $length);
  }

  /**
   * Truncates a file to a given length
   *
   * @param   int  $size length to truncate file to
   * @return  bool
   */
  public function truncate($size) {
    if ($size > $this
      ->size()) {

      // Pad with null-chars if we're "truncating up"
      $this->content .= str_repeat("\0", $size - $this
        ->size());
    }
    else {
      $this->content = substr($this->content, 0, $size);
    }
    return true;
  }

}

Classes

Namesort descending Description
StringBasedFileContent Default implementation for file contents based on simple strings.