Search by

yii2-extensions / psr-bridge

terabytesoftw

PSR-7 bridge for Yii2 with worker mode support

Package info

github.com/yii2-extensions/psr-bridge

Homepage

Documentation

pkg:composer/yii2-extensions/psr-bridge

Statistics

Installs: 13 425

Dependents: 2

Suggesters: 0

Stars: 5

Open Issues: 0

0.4.1 2026-10-23 12:17 UTC

This package is auto-updated.

Last update: 2026-10-23 12:26:33 UTC


README

Yii Framework

PSR bridge


PHPUnit Mutation Testing PHPStan Security

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.

FrankenPHP RoadRunner

Features

Feature Overview

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.

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.

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.

Package information

PHP Yii 2.0.55+ Yii 22.0.x Latest Stable Version Total Downloads

Project status

Codecov PHPStan Level Max Quality StyleCI

Our social networks

Follow on X Follow on Facebook Join our Subreddit Join on Telegram

License

License