yii2-extensions / psr-bridge
PSR-7 bridge for Yii2 with worker mode support
Requires
- php: >=8.3
- ext-filter: *
- ext-mbstring: *
- psr/http-factory: ^1.1
- psr/http-message: ^2.0
- psr/http-server-handler: ^1.0
- yiisoft/yii2: ~2.0.55 || ^22.0@dev
Requires (Dev)
- httpsoft/http-message: ^1.1
- infection/infection: ^0.35
- maglnet/composer-require-checker: ^4.1
- php-forge/baseline: ^0.2
- php-forge/coding-standard: ^0.3
- php-forge/support: ^0.3
- phpstan/extension-installer: ^1.4
- phpstan/phpstan-strict-rules: ^2.0.3
- phpunit/phpunit: ^10.5
- xepozz/internal-mocker: ^1.4
- yii2-extensions/phpstan: ^0.5
Suggests
- yii2-extensions/worker-debug: Provides Yii debug integration for PSR requests
Provides
None
Conflicts
None
Replaces
None
README
PSR bridge
Transform your Yii2 applications into high-performance, PSR-compliant powerhouses
Supporting traditional SAPI, RoadRunner, FrankenPHP, and worker-based architectures
Run a Yii application with PSR-7 requests and responses, including long-running workers. The bridge provides a PSR-15 request handler, Yii request/response adapters, upload conversion, and a streaming SAPI emitter.
Available deployment options
High-Performance Worker Mode
Long-running PHP workers for higher throughput and lower latency.
Features
Installation
Requires the filter and mbstring PHP extensions. Install a PSR-7/PSR-17 implementation alongside the bridge; the
example uses HttpSoft:
composer require yii2-extensions/psr-bridge:^0.4 httpsoft/http-message
See installation.
Quick start
In an existing Yii application, use this entry script in place of the usual Application::run(). The example assumes
web/index.php, Composer dependencies, and the application's config/web.php with its routes and secret
request.cookieValidationKey already configured.
<?php declare(strict_types=1); use HttpSoft\Message\{ResponseFactory, ServerRequestFactory, StreamFactory, UploadedFileFactory}; use Psr\Http\Message\{ResponseFactoryInterface, StreamFactoryInterface}; use yii2\extensions\psrbridge\creator\ServerRequestCreator; use yii2\extensions\psrbridge\emitter\SapiEmitter; use yii2\extensions\psrbridge\http\Application; ini_set('session.use_cookies', '0'); require dirname(__DIR__) . '/vendor/autoload.php'; require dirname(__DIR__) . '/vendor/yiisoft/yii2/Yii.php'; $config = require dirname(__DIR__) . '/config/web.php'; $config['container']['definitions'][ResponseFactoryInterface::class] = ResponseFactory::class; $config['container']['definitions'][StreamFactoryInterface::class] = StreamFactory::class; $app = new Application($config); $creator = new ServerRequestCreator(new ServerRequestFactory(), new StreamFactory(), new UploadedFileFactory()); $request = $creator->createFromGlobals(); $response = $app->handle($request); $emitted = false; try { (new SapiEmitter())->emit($response, $request->getMethod() !== 'HEAD'); $emitted = true; } finally { $app->finalize($emitted); }
Application supplies the bridge request, response, and error handler by default. For a worker, create the application
once and repeat handle(), runtime emission, then finalize() for each request. Keep file streams open until emission
completes. A PSR-15 host must arrange this extra finalization step.
Worker lifecycle defaults
useSession=false skips eager session opening around bootstrap; session IDs are still isolated on every request. Keep
request-scoped components out of persistentComponents.
Smart Body Parsing
See the configuration guide before changing lifecycle settings or handling JSON bodies created from SAPI globals.
Documentation
Practical guides and complete examples for PSR-7 integration and the worker lifecycle.
- ๐ Installation and Runtime Choices
- โ๏ธ Configuration and Request Isolation
- ๐ก Worker Lifecycle, JSON, Uploads, and Downloads
- ๐ Upgrade Guide and Migration Checks
- ๐งช Testing Guide
The guides and the API reference generated
from the PHPDoc in src/ are published at https://yii2-framework.github.io/docs/extensions/psr-bridge/.
AI assistance
AI agents: read the documentation index and fetch the Markdown version
of a page by appending index.md to its URL. The
AI agents guide covers skill installation, client setup and
verification.
- ๐ค
yii2-psr-bridge-workerskill: Worker lifecycle. - ๐งญ
yii2-frameworkskill: Yii 22.0 application conventions.
The hosted documentation covers Yii 22.0. If it does not match the installed revision or is unavailable, use the repository guides, the skill source, the source PHPDoc and the changelog.