mako / psr-http-message-bridge
PSR HTTP message bridge for the Mako Framework
Package info
github.com/mako-framework/psr-http-message-bridge
pkg:composer/mako/psr-http-message-bridge
dev-master / 1.0.x-dev
2026-09-13 18:46 UTC
Requires
- php: >=8.5.0
- mako/framework: ^13.0.0@dev
- psr/http-factory: ^1.0
- psr/http-message: ^2.0
Requires (Dev)
- dg/bypass-finals: ^1.11
- mockery/mockery: ^1.6
- nyholm/psr7: ^1.8
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^13.3
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-09-13 18:47:03 UTC
README
Converts between Mako HTTP requests/responses and PSR-7 messages using any PSR-17 factory implementation.
Requirements
- Mako ^13.0
- A PSR-7/PSR-17 implementation (e.g. nyholm/psr7)
Installation
composer require mako/psr-http-message-bridge nyholm/psr7
Usage
Converting a Mako request to a PSR-7 server request
use mako\bridges\psr\http\message\PsrServerRequestFactory; use Nyholm\Psr7\Factory\Psr17Factory; $psr17Factory = new Psr17Factory; $factory = new PsrServerRequestFactory( serverRequestFactory: $psr17Factory, uriFactory: $psr17Factory, streamFactory: $psr17Factory, uploadedFileFactory: $psr17Factory ); $psrRequest = $factory->create($request);
Converting a PSR-7 response to a Mako response
use mako\bridges\psr\http\message\MakoResponseFactory; use mako\bridges\psr\http\message\MakoResponseHydrator; // Create a new Mako response from a PSR-7 response $response = new MakoResponseFactory()->create($psrResponse, $request); // Or hydrate an existing Mako response // (call $response->reset() first if you want a clean slate) new MakoResponseHydrator()->hydrate($response, $psrResponse);
Streaming responses
Set the $stream argument to true to stream the response body in chunks instead of buffering it in memory. This is useful for large responses or responses of indeterminate size.
$hydrator = new MakoResponseHydrator; $hydrator->hydrate($response, $psrResponse, stream: true);
The default chunk size is 8192 bytes and can be configured through the constructor:
$hydrator = new MakoResponseHydrator(chunkSize: 65536);
Example: running a PSR-15 handler inside a Mako controller
use mako\bridges\psr\http\message\MakoResponseHydrator; use mako\bridges\psr\http\message\PsrServerRequestFactory; use mako\http\Request; use mako\http\Response; use Nyholm\Psr7\Factory\Psr17Factory; use Psr\Http\Server\RequestHandlerInterface; class Controller { public function __invoke( Request $request, Response $response, RequestHandlerInterface $handler ): void { $psr17Factory = new Psr17Factory; $psrRequest = new PsrServerRequestFactory( $psr17Factory, $psr17Factory, $psr17Factory, $psr17Factory )->create($request); $psrResponse = $handler->handle($psrRequest); new MakoResponseHydrator()->hydrate($response, $psrResponse); } }