Parser and serializer for the Structured Field Values for HTTP specification.
Using composer:
composer require gapple/structured-fields
The Parser
class provides static methods to convert a header string to structured data.
If the string cannot be parsed, a ParseException
is thrown.
Parser::parseItem(string): Item;
Parser::parseList(string): OuterList;
Parser::parseDictionary(string): Dictionary;
The Serializer
class provides static methods to convert structured data to a header string.
If the input cannot be serialized, a SerializeException
is thrown.
Serializer::serializeItem(mixed, ?object): string;
Serializer::serializeList(iterable): string;
Serializer::serializeDictionary(object): string;
Serializer
will accept string
or any Stringable
object as an Item value,
but will throw a SerializeException
if it contains any characters outside the
printable ASCII range.
Special Item types must use a decorating class in order to be serialized correctly:
-
Byte Sequences (
\gapple\StructuredFields\Bytes
)
A string containing binary data.Serializer
andParser
handle base64 encoding and decoding the provided string. -
Display Strings (
\gapple\StructuredFields\DisplayString
)
A string that includes Unicode characters.Serializer
andParser
handle percent-encoding and decoding non-ascii characters. -
Tokens (
\gapple\StructuredFields\Token
)
A short textual word with a restricted character set. -
Dates (
\gapple\StructuredFields\Date
)
An integer timestampSerializer
accepts any object that implements\DateTimeInterface
.
Parser
will return a\gapple\StructuredFields\Date
object.