# Класс HttpSoft\ServerRequest\PhpInputStream

Класс, реализующий Psr\Http\Message\StreamInterface только для чтения потока (по умолчанию: php://input) или файла.

Исходный код на GitHub.

use HttpSoft\ServerRequest\PhpInputStream;

$stream = new PhpInputStream();

$stream->getMetadata('uri'); // 'php://input'
$stream->getMetadata('mode'); // 'rb'
$stream->getContents(); // ''

$stream->isReadable(); // true
$stream->isSeekable(); // true
$stream->isWritable(); // false

$stream->close();
$stream->isReadable(); // false
$stream->isSeekable(); // false
$stream->isWritable(); // false

// Создать экземпляр из существующего файла.

$stream = new PhpInputStream('path/to/file');

$stream->getMetadata('uri'); // 'path/to/file'
$stream->getMetadata('mode'); // 'r'

$stream->read(5); // 'File '
$stream->getContents(); // 'content'
$stream->__toString(); // 'File content'
// эквивалентно:
(string) $stream; // echo $stream;

// Создать экземпляр из существующего ресурса.

$resource = fopen('path/to/file', 'r');
$stream = new PhpInputStream($resource);

$stream->getMetadata('uri'); // 'path/to/file'
$stream->getMetadata('mode'); // 'r'

$stream->read(5); // 'File '
$stream->getContents(); // 'content'
$stream->__toString(); // 'File content'
// эквивалентно:
(string) $stream; // echo $stream;

# Публичные методы

Оригинальное подробное описание методов смотрите в Psr\Http\Message\StreamInterface.

/**
 * @param string|resource $stream
 * @param string $mode
 */
public function __construct($stream = 'php://temp', string $mode = 'r');

Ниже представлены методы, которые были модифицированы для этого класса. Все остальные методы с описанием находятся в подключаемом трейте (HttpSoft\Message\StreamTrait).

# isWritable

Всегда возвращает false, так как поток доступен только для чтения.

public function isWritable(): bool;

# read

Считывает и возвращает данные из потока, дописывая их в кэш для последующего вывода при повторных вызовах метода getContents().

/**
 * @param int $length
 * @return string
 */
public function read($length): string;

# getContents

Возвращает оставшееся содержимое в строке, повторные вызовы вернут строку целиком от начала до конца.

public function getContents(): string;