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.