# Трейт HttpSoft\Message\StreamTrait
Трейт, реализующий методы, определенные в Psr\Http\Message\StreamInterface, используется внутри HttpSoft\Message\Stream.
# Публичные методы
Оригинальное подробное описание методов смотрите в Psr\Http\Message\StreamInterface.
# __destruct
Закрывает поток и связанные с ним ресурсы, когда экземпляр уничтожается.
public function __destruct(); # __toString
Читает все данные из потока в строку, от начала до конца.
public function __toString(): string; Если поток не может быть прочитан, будет брошено исключение \RuntimeException.
# close
Закрывает поток и связанные с ним ресурсы.
public function close(): void; # detach
Открепляет от потока связанные с ним ресурсы.
/**
* @return resource|null
*/
public function detach(); После открепления поток находится в непригодном для использования состоянии.
# getSize
Возвращает размер в байтах, если он известен или null, если неизвестен.
public function getSize(): ?int; # tell
Возвращает текущее положение указателя чтения/записи файла.
public function tell(): int; Если невозможно определить позицию указателя, будет брошено исключение \RuntimeException.
# eof
Возвращает true, если указатель находится в конце потока.
public function eof(): bool; # isSeekable
Возвращает true, если для потока разрешено перемещение указателя.
public function isSeekable(): bool; # seek
Перемещает позицию указателя в потоке.
/**
* @param int $offset
* @param int $whence
*/
public function seek($offset, $whence = SEEK_SET): void; Если невозможно переместить позицию указателя, будет брошено исключение \RuntimeException.
# rewind
Перемещает позицию указателя в начало потока.
public function rewind(): void; Если невозможно переместить позицию указателя в начало потока, будет брошено исключение \RuntimeException.
# isWritable
Возвращает true, если поток доступен для записи.
public function isWritable(): bool; # write
Записывает данные в поток и возвращает количество байтов, записанных в поток.
/**
* @param string $string
* @return int
*/
public function write($string): int; Если не удается записать данные в поток, будет брошено исключение \RuntimeException.
$stream = new Stream('php://temp', 'wb+');
(string) $stream; // ''
$stream->write('content');
(string) $stream; // 'content'
$stream = new Stream('php://temp', 'r');
$stream->write('content'); // throws RuntimeException # isReadable
Возвращает true, если поток доступен для чтения.
public function isReadable(): bool; # read
Считывает и возвращает данные из потока по количеству переданных байтов или пустую строку, если нет доступных байтов.
/**
* @param int $length
* @return string
*/
public function read($length): string; Если не удается прочитать данные из потока, будет брошено исключение \RuntimeException.
$stream = new Stream('path/to/file', 'r');
$stream->read(5); // 'File '
$stream->getContents(); // 'content'
(string) $stream; // 'File content'
$stream = new Stream('path/to/file', 'w');
$stream->read(5); // throws RuntimeException # getContents
Возвращает оставшееся содержимое в строке.
public function getContents(): string; Если не удается прочитать из потока или при чтении возникает ошибка, будет брошено исключение \RuntimeException.
$stream = new Stream('path/to/file', 'r');
$stream->read(5); // 'File '
$stream->getContents(); // 'content'
(string) $stream; // 'File content'
$stream = new Stream('path/to/file', 'r');
$stream->getContents(); // 'File content'
$stream->getContents(); // ''
(string) $stream; // 'File content'
$stream = new StreamPhpInput('path/to/file');
$stream->getContents(); // 'File content'
$stream->getContents(); // 'File content'
(string) $stream; // 'File content'
$stream = new Stream('path/to/file', 'w');
$stream->getContents(); // throws RuntimeException # getMetadata
Возвращает метаданные потока в виде ассоциативного массива или извлекает значение по определенному ключу.
/**
* @param string $key
* @return array|mixed|null
*/
public function getMetadata($key = null); Возвращает ассоциативный массив, если ключ не указан. Возвращает определенное значение ключа, если ключ был передан и значение найдено, или null, если ключ в массиве отсутствует.
$stream = new Stream('php://temp', 'wb+');
$stream->getMetadata();
/*
[
'wrapper_type' => 'PHP',
'stream_type' => 'TEMP',
'mode' => 'w+b',
'unread_bytes' => 0,
'seekable' => true,
'uri' => 'php://temp',
];
*/
$stream->getMetadata('wrapper_type'); // 'PHP'
$stream->getMetadata('stream_type'); // 'TEMP'
$stream->getMetadata('mode'); // 'w+b'
$stream->getMetadata('unread_bytes'); // 0
$stream->getMetadata('seekable'); // true
$stream->getMetadata('uri'); // 'php://temp'
$stream->getMetadata('no-key'); // null 