A lightweight PSR-7/15 HTTP kernel, routing, endpoint dispatch, and problem-details package for DomainFlow applications.

Maintainers

Package info

github.com/domainflow/http

pkg:composer/domainflow/http

Transparency log

Statistics

Installs: 21

Dependents: 1

Suggesters: 1

Stars: 0

Open Issues: 0

v0.1.0 2026-08-25 11:42 UTC

This package is auto-updated.

Last update: 2026-08-25 11:45:27 UTC


README

Tests Packagist Version PHP Version License PHPStan

DomainFlow HTTP is a small PSR-based HTTP entry point for DomainFlow applications. It routes PSR-7 server requests to typed invokable endpoints and provides request hydration, endpoint dispatch, JSON responses, Problem Details, compiled routing, and an optional DomainFlow Core bootstrap adapter.

The package keeps application and domain code independent of Symfony HttpFoundation, a concrete PSR-7 implementation, and a full-stack framework.

Requirements

  • PHP 8.4 or later; tested on PHP 8.4 and PHP 8.5
  • PSR-7 message and PSR-17 factory implementations supplied by the application
  • A PSR-11 container when using the included Psr11EndpointResolver

Symfony Routing and Relay are internal implementation dependencies. Concrete PSR-7 implementations and SAPI emitters remain application choices.

Installation

composer require domainflow/http

The optional Core bridge is available when domainflow/core is installed. The library itself does not require DomainFlow Core at runtime.

Basic composition

Declare an endpoint as an invokable class with a route attribute:

use DomainFlow\Http\Attribute\Route;

#[Route(method: 'GET', path: '/hello/{name}', name: 'hello')]
final class HelloEndpoint
{
    public function __invoke(HelloRequest $request): array
    {
        return ['message' => 'Hello, ' . $request->name . '!'];
    }
}

final readonly class HelloRequest
{
    public function __construct(public string $name)
    {
    }
}

Runtime implementations

The package deliberately does not choose a concrete PSR implementation or SAPI emitter. A minimal application-owned composition is available in examples/runtime. It uses Nyholm PSR-7 and Laminas' HTTP handler runner:

cd examples/runtime
composer install
php -S 127.0.0.1:8080 -t public public/index.php

Then request the example endpoint:

curl http://127.0.0.1:8080/hello/Ada
# {"message":"Hello, Ada!"}

DomainFlow Core

DomainFlow\Http\Bridge\DomainFlowCore\HttpServiceProvider registers the HTTP kernel and default ports during Core bootstrap. Existing application routers, hydrators, endpoint adapters, problem mappers, and PSR factories remain application-owned. Core's callable middleware pipeline is not merged into the PSR-15 request pipeline.

Development

composer test-all
composer phpstan
composer lint
composer quality

The package targets PHP 8.4 and 8.5, PHPStan level 10, strict formatting, dependency auditing, and full reachable-source line coverage.

License

MIT license.