https://github.com/gapple/structured-fields
PHP Library for Structured Field Values for HTTP
https://github.com/gapple/structured-fields
http php rfc8941 structured-fields structured-headers
Last synced: 11 months ago
JSON representation
PHP Library for Structured Field Values for HTTP
- Host: GitHub
- URL: https://github.com/gapple/structured-fields
- Owner: gapple
- License: mit
- Created: 2020-01-29T22:30:56.000Z (about 6 years ago)
- Default Branch: develop
- Last Pushed: 2024-02-14T08:08:53.000Z (almost 2 years ago)
- Last Synced: 2024-05-02T01:25:09.495Z (almost 2 years ago)
- Topics: http, php, rfc8941, structured-fields, structured-headers
- Language: PHP
- Homepage:
- Size: 156 KB
- Stars: 4
- Watchers: 3
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: readme.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
Structured Field Values for PHP
=======================================
Parser and serializer for the [Structured Field Values for HTTP][1] specification.
[](https://github.com/gapple/structured-fields/actions/workflows/php.yml)
[](https://codecov.io/gh/gapple/structured-fields)
[](https://github.com/gapple/structured-fields/releases)
[](https://packagist.org/packages/gapple/structured-fields)
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.
[1]: https://www.rfc-editor.org/rfc/rfc9651.html