gapple / structured-headers
Library for Structured Field Values for HTTP
Requires
- php: ^8.1
Requires (Dev)
- httpwg/structured-field-tests: *@dev
- paragonie/constant_time_encoding: ^3.0.0
- phpmd/phpmd: ^2.15
- phpstan/phpstan: ^1.12
- phpstan/phpstan-phpunit: ^1.4
- phpunit/phpunit: ^10.5
- slevomat/coding-standard: ^8.15
- squizlabs/php_codesniffer: ^3.11
This package is auto-updated.
Last update: 2025-02-03 10:10:10 UTC
README
Parser and serializer for the Structured Field Values for HTTP specification.
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
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.