zbateson / stream-decorators
PHP psr7 stream decorators for mime message part streams
Fund package maintenance!
zbateson
Installs: 46 850 880
Dependents: 5
Suggesters: 0
Security: 0
Stars: 47
Watchers: 1
Forks: 7
Open Issues: 0
pkg:composer/zbateson/stream-decorators
Requires
- php: >=8.1
- guzzlehttp/psr7: ^2.5
- zbateson/mb-wrapper: ^2.0 || ^3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: *
- phpstan/phpstan: *
- phpunit/phpunit: ^10.0 || ^11.0
README
PSR-7 stream decorators for character set conversion and common mail format content encodings.
composer require zbateson/stream-decorators
Sponsors
A huge thank you to all my sponsors. <3
If this project's helped you, please consider sponsoring me.
Requirements
PHP 8.1 or newer. Tested on PHP 8.1, 8.2, 8.3, 8.4, and 8.5.
Description
The library provides the following Psr\Http\Message\StreamInterface implementations:
Base64Stream- decodes on read and encodes on write to base64CharsetStream- encodes from$streamCharsetto$stringCharseton read, and vice-versa on writeChunkSplitStream- splits written characters into lines of$lineLengthlong (stream implementation of PHP'schunk_split)DecoratedCachingStream- a caching stream that writes to a decorated stream, and reads from the cached undecorated streamNonClosingStream- overridesclose()anddetach(), and simply unsets the attached stream without closing itPregReplaceFilterStream- callspreg_replacewith passed arguments on everyread()callQuotedPrintableStream- decodes on read and encodes on write to quoted-printableSeekingLimitStream- similar to GuzzleHttp'sLimitStream, but maintains an internal current read positionTellZeroStream-tell()always returns0-- used byDecoratedCachingStreamto wrap aBufferStreamin aCachingStreamUUStream- decodes on read, encodes on write to uu-encoded
Usage
$stream = GuzzleHttp\Psr7\Utils::streamFor($handle); $b64Stream = new ZBateson\StreamDecorators\Base64Stream($stream); $charsetStream = new ZBateson\StreamDecorators\CharsetStream($b64Stream, 'UTF-32', 'UTF-8'); while (($line = GuzzleHttp\Psr7\Utils::readLine()) !== false) { echo $line, "\r\n"; }
Note that CharsetStream, depending on the target encoding, may return multiple bytes when a single 'char' is read. If using PHP's fread, this will result in a warning. It is recommended to not convert to a stream handle (with StreamWrapper) when using CharsetStream.
License
BSD licensed - please see license agreement.