mheads / yii2-psr7-bridge
Bridge for converting Yii2 HTTP request and response objects to and from PSR-7 HTTP messages.
1.0.0
2026-09-16 08:10 UTC
Requires
- php: 8.3 - 8.5
- psr/http-factory: ^1.1
- psr/http-message: ^2.0
- yiisoft/yii2: ^2.0.53
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.94
- nyholm/psr7: ^1.8
- phpunit/phpunit: ^12.5
- vimeo/psalm: ^6.16
Suggests
- nyholm/psr7: Provides PSR-7 and PSR-17 implementations used in the examples.
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-09-16 08:17:49 UTC
README
Small bridge for converting Yii2 HTTP objects to PSR-7 requests and PSR-7 responses back to Yii2 responses.
Install
composer require mheads/yii2-psr7-bridge
Install a PSR-7 / PSR-17 implementation as well. For example:
composer require nyholm/psr7
Register in DI
In the yiisoft/yii2-app-basic template this is config/web.php.
return [ // ... 'container' => [ // ... 'definitions' => [ // ... // mheads/yii2-psr7-bridge \Mheads\Yii2Psr7Bridge\HttpMessageBridgeInterface::class => \Mheads\Yii2Psr7Bridge\HttpMessageBridge::class, \Mheads\Yii2Psr7Bridge\Request\Yii2ToPsr7RequestConverterInterface::class => \Mheads\Yii2Psr7Bridge\Request\Yii2ToPsr7RequestConverter::class, \Mheads\Yii2Psr7Bridge\Response\Psr7ToYii2ResponseConverterInterface::class => \Mheads\Yii2Psr7Bridge\Response\Psr7ToYii2ResponseConverter::class, \Psr\Http\Message\ServerRequestFactoryInterface::class => \Nyholm\Psr7\Factory\Psr17Factory::class, ], ], // ... ];
Usage in an Action
<?php declare(strict_types=1); namespace app\actions; use app\services\SomePsrRequestService; use Mheads\Yii2Psr7Bridge\HttpMessageBridgeInterface; use yii\base\Action; use yii\web\Controller; use yii\web\Response; /** * @extends Action<Controller> */ class SomeAction extends Action { public function __construct( string $id, Controller $controller, private readonly HttpMessageBridgeInterface $bridge, private readonly SomePsrRequestService $service, array $config = [], ) { parent::__construct($id, $controller, $config); } public function run(): Response { $psrRequest = $this->bridge->toPsrRequest($this->controller->request); $psrResponse = $this->service->handle($psrRequest); return $this->bridge->toYiiResponse($psrResponse, $this->controller->response); } }