# Трейт 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