innmind / http-parser
3.0.0
2025-08-02 15:50 UTC
Requires
- php: ~8.2
- innmind/foundation: ~1.4
Requires (Dev)
- innmind/black-box: ^6.4.1
- innmind/coding-standard: ~2.0
- innmind/static-analysis: ^1.2.1
This package is auto-updated.
Last update: 2025-08-02 15:52:37 UTC
README
Set of classes to parse any stream into innmind/http
objects.
This is useful if you want to parse requests saved in files or build an http server.
Features supported:
- Decoding requests
- Reading streamed requests with
Transfer-Encoding: chunked
- Extracting
Cookie
s - Extracting form data
- Extracting query data
- Reading multipart bodies
Installation
composer require innmind/http-parser
Usage
use Innmind\HttpParser\{ Request\Parse, ServerRequest\Transform, ServerRequest\DecodeCookie, ServerRequest\DecodeQuery, ServerRequest\DecodeForm, }; use Innmind\TimeContinuum\Clock; use Innmind\IO\IO; use Innmind\Http\ServerRequest; use Innmind\Immutable\Str; // this data could come from anywhere $raw = <<<RAW POST /some-form HTTP/1.1 Host: innmind.com Content-Type: application/x-www-form-urlencoded Content-Length: 23 Accept-Language: fr-fr Cookie: PHPSESSID=298zf09hf012fh2; csrftoken=u32t4o3tb3gg43; _gat=1 some[key]=value&foo=bar RAW; $tmp = \fopen('php://temp', 'w+'); $io = IO::fromAmbientAuthority() ->streams() ->acquire($tmp); $io ->write() ->sink(Sequence::of(Str::of($raw))) ->unwrap(); \fseek($tmp, 0); $request = $parse($io->read()) ->map(Transform::of()) ->map(DecodeCookie::of()) ->map(DecodeQuery::of()) ->map(DecodeForm::of()) ->match( static fn($request) => $request, static fn() => throw new \RuntimeException, ); $request instanceof ServerRequest, // true