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.SerializerandParserhandle base64 encoding and decoding the provided string.
- 
Display Strings ( \gapple\StructuredFields\DisplayString)
 A string that includes Unicode characters.SerializerandParserhandle 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 timestampSerializeraccepts any object that implements\DateTimeInterface.
 Parserwill return a\gapple\StructuredFields\Dateobject.