class LargeFileContent in Zircon Profile 8
Same name and namespace in other branches
- 8.0 vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/content/LargeFileContent.php \org\bovigo\vfs\content\LargeFileContent
File content implementation to mock large files.
When content is written via write() the data will be written into the positions according to the current offset. When content is read via read() it will use the already written data. If no data is written at the offsets to read those offsets will be filled with spaces. Please note that accessing the whole content via content() will deliver a string with the length of the originally defined size. It is not advisable to do so with large sizes, except you have enough memory and time. :-)
@since 1.3.0
Hierarchy
- class \org\bovigo\vfs\content\SeekableFileContent implements FileContent
- class \org\bovigo\vfs\content\LargeFileContent implements FileContent
Expanded class hierarchy of LargeFileContent
2 files declare their use of LargeFileContent
- vfsStream.php in vendor/
mikey179/ vfsStream/ src/ main/ php/ org/ bovigo/ vfs/ vfsStream.php - vfsStreamWrapperLargeFileTestCase.php in vendor/
mikey179/ vfsStream/ src/ test/ php/ org/ bovigo/ vfs/ vfsStreamWrapperLargeFileTestCase.php
File
- vendor/
mikey179/ vfsStream/ src/ main/ php/ org/ bovigo/ vfs/ content/ LargeFileContent.php, line 25
Namespace
org\bovigo\vfs\contentView source
class LargeFileContent extends SeekableFileContent implements FileContent {
/**
* byte array of written content
*
* @type char[]
*/
private $content = array();
/**
* file size in bytes
*
* @type int
*/
private $size;
/**
* constructor
*
* @param int $size file size in bytes
*/
public function __construct($size) {
$this->size = $size;
}
/**
* create large file with given size in kilobyte
*
* @param int $kilobyte
* @return LargeFileContent
*/
public static function withKilobytes($kilobyte) {
return new self($kilobyte * 1024);
}
/**
* create large file with given size in megabyte
*
* @param int $megabyte
* @return LargeFileContent
*/
public static function withMegabytes($megabyte) {
return self::withKilobytes($megabyte * 1024);
}
/**
* create large file with given size in gigabyte
*
* @param int $gigabyte
* @return LargeFileContent
*/
public static function withGigabytes($gigabyte) {
return self::withMegabytes($gigabyte * 1024);
}
/**
* returns actual content
*
* @return string
*/
public function content() {
return $this
->doRead(0, $this->size);
}
/**
* returns size of content
*
* @return int
*/
public function size() {
return $this->size;
}
/**
* actual reading of given byte count starting at given offset
*
* @param int $offset
* @param int $count
*/
protected function doRead($offset, $count) {
if ($offset + $count > $this->size) {
$count = $this->size - $offset;
}
$result = '';
for ($i = 0; $i < $count; $i++) {
if (isset($this->content[$i + $offset])) {
$result .= $this->content[$i + $offset];
}
else {
$result .= ' ';
}
}
return $result;
}
/**
* 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) {
for ($i = 0; $i < $length; $i++) {
$this->content[$i + $offset] = $data[$i];
}
if ($offset >= $this->size) {
$this->size += $length;
}
elseif ($offset + $length > $this->size) {
$this->size = $offset + $length;
}
}
/**
* Truncates a file to a given length
*
* @param int $size length to truncate file to
* @return bool
*/
public function truncate($size) {
$this->size = $size;
foreach (array_filter(array_keys($this->content), function ($pos) use ($size) {
return $pos >= $size;
}) as $removePos) {
unset($this->content[$removePos]);
}
return true;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
LargeFileContent:: |
private | property | byte array of written content | |
LargeFileContent:: |
private | property | file size in bytes | |
LargeFileContent:: |
public | function |
returns actual content Overrides FileContent:: |
|
LargeFileContent:: |
protected | function |
actual reading of given byte count starting at given offset Overrides SeekableFileContent:: |
|
LargeFileContent:: |
protected | function |
actual writing of data with specified length at given offset Overrides SeekableFileContent:: |
|
LargeFileContent:: |
public | function |
returns size of content Overrides FileContent:: |
|
LargeFileContent:: |
public | function |
Truncates a file to a given length Overrides FileContent:: |
|
LargeFileContent:: |
public static | function | create large file with given size in gigabyte | |
LargeFileContent:: |
public static | function | create large file with given size in kilobyte | |
LargeFileContent:: |
public static | function | create large file with given size in megabyte | |
LargeFileContent:: |
public | function | constructor | |
SeekableFileContent:: |
private | property | current position within content | |
SeekableFileContent:: |
public | function | for backwards compatibility with vfsStreamFile::bytesRead() | |
SeekableFileContent:: |
public | function |
checks whether pointer is at end of file Overrides FileContent:: |
|
SeekableFileContent:: |
public | function |
reads the given amount of bytes from content Overrides FileContent:: |
|
SeekableFileContent:: |
public | function | for backwards compatibility with vfsStreamFile::readUntilEnd() | |
SeekableFileContent:: |
public | function |
seeks to the given offset Overrides FileContent:: |
|
SeekableFileContent:: |
public | function |
writes an amount of data Overrides FileContent:: |