Skip to content

PHP Library for Structured Field Values for HTTP

License

Notifications You must be signed in to change notification settings

gapple/structured-fields

Folders and files

NameName
Last commit message
Last commit date

Latest commit

f753bf4 · Apr 14, 2025
Apr 11, 2025
Apr 13, 2025
Apr 14, 2025
Jan 13, 2025
Jan 8, 2025
Feb 18, 2023
Jun 12, 2020
Feb 3, 2025
Jan 9, 2025
Feb 3, 2025
Jan 9, 2025
Jan 9, 2025
Apr 14, 2025
Jan 13, 2025

Repository files navigation

Structured Field Values for PHP

Parser and serializer for the Structured Field Values for HTTP specification.

Build Status Code Coverage Latest Release Packagist Downloads

Installation

Using composer:

composer require gapple/structured-fields

API

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;

Special Types

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 and Parser handle base64 encoding and decoding the provided string.

  • Display Strings (\gapple\StructuredFields\DisplayString)
    A string that includes Unicode characters.

    Serializer and Parser 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 timestamp

    Serializer accepts any object that implements \DateTimeInterface.
    Parser will return a \gapple\StructuredFields\Date object.