Object wrapper for PHP resources.
composer require zenstruck/stream
use Zenstruck\Stream;
// wrap
$stream = Stream::wrap($resource);
$stream = Stream::wrap('string');
$stream = Stream::wrap($stream);
// open
$stream = Stream::open('some/file.txt', 'r');
// php://memory
$stream = Stream::inMemory();
// php://output
$stream = Stream::inOutput();
// \tmpfile()
$stream = Stream::tempFile();
// autoclose on $stream __destruct
$stream->autoClose(); // Stream
/** @var \Zenstruck\Stream $stream */
// metadata
$stream->id(); // int - the resource id
$stream->type(); // string - the resource type
$stream->metadata(); // array - the resources metadata
$stream->metadata('wrapper_type'); // mixed - specific resource metadata key
$stream->uri(); // string - shortcut for `$stream->metadata('uri')`
// read
$stream->get(); // resource - the raw, wrapped resource
$stream->contents(); // string - the contents of the resource (auto-rewound)
// write
$stream->write($resource); // self - write another resource to the stream
$stream->write('string'); // self - write a string to the stream
$stream->write($anotherStream); // self - write another \Zenstruck\Stream instance to the stream
// manipulate
$stream->close(); // no-return - close the resource (if open)
$stream->rewind(); // self - rewind the stream