This package provides a PSR-7-compatible StreamInterface implementation,
along with an extended UlovDomov\Stream\FileStream class that adds more.
Run:
composer require ulovdomov/php-streamYou can create stream from:
resourcestringintfloatbool\Psr\Http\Message\StreamInterfacecallable\Iteratornull
$stream = \UlovDomov\Stream\FileStream::create('my stream content');For file path:
// stream for reading
$stream = \UlovDomov\Stream\FileStream::createForPath(__DIR__ . '/file.pdf');
// stream for writing
$stream = \UlovDomov\Stream\FileStream::createForPath(__DIR__ . '/file.pdf', 'w');/** @var UlovDomov\Stream\FileStream $stream */
// get mime type
$stream->getMimeType(); // string: text/plain
// get file extension (can return null for application/octet-stream or unknown mimetype)
$stream->getExtension(); // string: txt
// save content as file
$stream->saveAs(__DIR__ . '/my-new-file.jpg');Replacement for fopen, it returns a resource; throws a StreamException on error.
/** @var resource $file */
$file = \UlovDomov\Stream\Utils::tryFopen(__DIR__ . '/my-file.pdf');Get file extension. Can return null for application/octet-stream or not implemented mimetype.
\UlovDomov\Stream\Utils::mimetypeToExtension('application/pdf');
// "pdf"Get true if mimetype is application/octet-stream.
\UlovDomov\Stream\Utils::isOctetStream('application/octet-stream');
// true
\UlovDomov\Stream\Utils::isOctetStream('text/json');
// false- Run for initialization
make init- Run composer install
make composerUse tasks in Makefile:
- To log into container
make docker- To run code sniffer fix
make cs-fix- To run PhpStan
make phpstan- To run tests
make phpunit