PartStreamFilterManager
Manages attached stream filters for a MessagePart's content resource handle.
The attached stream filters are: o Content-Transfer-Encoding filter to manage decoding from a supported encoding: quoted-printable, base64 and x-uuencode. o Charset conversion filter to convert to UTF-8
Tags
Table of Contents
- $filteredStream : StreamInterface
- $stream : StreamInterface
- $charset : array<string|int, mixed>
- $charsetConversionFilter : string
- $encoding : array<string|int, mixed>
- $streamFactory : StreamFactory
- __construct() : mixed
- Sets up filter names used for stream_filter_append
- getContentStream() : StreamInterface
- Checks what transfer-encoding decoder filters and charset conversion filters are attached on the handle, closing/reopening the handle if different, before attaching relevant filters for the passed $transferEncoding and charset arguments, and returning a StreamInterface.
- reset() : mixed
- Closes the attached resource handle, resets mapped encoding and charset filters, and reopens the handle seeking back to the current position.
- setStream() : mixed
- Sets the URL used to open the content resource handle.
- attachCharsetFilter() : mixed
- Attaches a charset conversion filter to the attached content handle, for the passed arguments.
- attachTransferEncodingFilter() : mixed
- Attaches a decoding filter to the attached content handle, for the passed $transferEncoding.
- isCharsetFilterChanged() : bool
- Returns true if the attached stream filter used for charset conversion on the current handle is different from the one needed based on the passed arguments.
- isTransferEncodingFilterChanged() : bool
- Returns true if the attached stream filter used for decoding the content on the current handle is different from the one passed as an argument.
Properties
$filteredStream
protected
StreamInterface
$filteredStream
$stream
protected
StreamInterface
$stream
$charset
private
array<string|int, mixed>
$charset
= ['from' => null, 'to' => null, 'filter' => null]
$charsetConversionFilter
private
string
$charsetConversionFilter
$encoding
private
array<string|int, mixed>
$encoding
= ['type' => null, 'filter' => null]
$streamFactory
private
StreamFactory
$streamFactory
Methods
__construct()
Sets up filter names used for stream_filter_append
public
__construct(StreamFactory $streamFactory) : mixed
Parameters
- $streamFactory : StreamFactory
Return values
mixed —getContentStream()
Checks what transfer-encoding decoder filters and charset conversion filters are attached on the handle, closing/reopening the handle if different, before attaching relevant filters for the passed $transferEncoding and charset arguments, and returning a StreamInterface.
public
getContentStream(string $transferEncoding, string $fromCharset, string $toCharset) : StreamInterface
Parameters
- $transferEncoding : string
- $fromCharset : string
-
the character set the content is encoded in
- $toCharset : string
-
the target encoding to return
Return values
StreamInterface —reset()
Closes the attached resource handle, resets mapped encoding and charset filters, and reopens the handle seeking back to the current position.
public
reset() : mixed
Note that closing/reopening is done because of the following differences discovered between hhvm (up to 3.18 at least) and php:
o stream_filter_remove wasn't triggering php_user_filter's onClose callback o read operations performed after stream_filter_remove weren't calling filter on php_user_filter
It seems stream_filter_remove doesn't work on hhvm, or isn't implemented in the same way -- so closing and reopening seems to solve that.
Return values
mixed —setStream()
Sets the URL used to open the content resource handle.
public
setStream([StreamInterface $stream = null ]) : mixed
The function also closes the currently attached handle if any.
Parameters
- $stream : StreamInterface = null
Return values
mixed —attachCharsetFilter()
Attaches a charset conversion filter to the attached content handle, for the passed arguments.
protected
attachCharsetFilter(string $fromCharset, string $toCharset) : mixed
Parameters
- $fromCharset : string
-
the character set the content is encoded in
- $toCharset : string
-
the target encoding to return
Return values
mixed —attachTransferEncodingFilter()
Attaches a decoding filter to the attached content handle, for the passed $transferEncoding.
protected
attachTransferEncodingFilter(string $transferEncoding) : mixed
Parameters
- $transferEncoding : string
Return values
mixed —isCharsetFilterChanged()
Returns true if the attached stream filter used for charset conversion on the current handle is different from the one needed based on the passed arguments.
private
isCharsetFilterChanged(string $fromCharset, string $toCharset) : bool
Parameters
- $fromCharset : string
- $toCharset : string
Return values
bool —isTransferEncodingFilterChanged()
Returns true if the attached stream filter used for decoding the content on the current handle is different from the one passed as an argument.
private
isTransferEncodingFilterChanged(string $transferEncoding) : bool
Parameters
- $transferEncoding : string