yii2-extensions/psr-bridge
Composer 安装命令:
composer require yii2-extensions/psr-bridge
包简介
PSR-7 bridge for Yii2 with worker mode support
关键字:
README 文档
README
PSR bridge
Transform your Yii2 applications into high-performance, PSR-compliant powerhouses
Supporting traditional SAPI, RoadRunner, FrankenPHP, and worker-based architectures
Available deployment options
High-Performance Worker Mode
Long-running PHP workers for higher throughput and lower latency.
Features
Installation
composer require yii2-extensions/psr-bridge:^0.3
Quick start
Worker mode (FrankenPHP)
<?php declare(strict_types=1); // disable PHP automatic session cookie handling ini_set('session.use_cookies', '0'); require_once dirname(__DIR__) . '/vendor/autoload.php'; use yii2\extensions\frankenphp\FrankenPHP; use yii2\extensions\psrbridge\http\Application; // Load environment variables from .env file $dotenv = Dotenv\Dotenv::createImmutable(dirname(__DIR__)); $dotenv->safeLoad(); // production default (change to 'true' for development) define('YII_DEBUG', filter_var($_ENV['YII_DEBUG'] ?? false, FILTER_VALIDATE_BOOLEAN)); // production default (change to 'dev' for development) define('YII_ENV', $_ENV['YII_ENV'] ?? 'prod'); require_once dirname(__DIR__) . '/vendor/yiisoft/yii2/Yii.php'; $config = require_once dirname(__DIR__) . '/config/web/app.php'; $app = new Application($config); $runner = new FrankenPHP($app); $runner->run();
Worker mode (RoadRunner)
<?php declare(strict_types=1); require __DIR__ . '/../vendor/autoload.php'; use yii2\extensions\psrbridge\http\Application; use yii2\extensions\roadrunner\RoadRunner; define('YII_DEBUG', filter_var(getenv('YII_DEBUG'), FILTER_VALIDATE_BOOLEAN)); define('YII_ENV', getenv('YII_ENV') ?? 'prod'); require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php'; $config = require dirname(__DIR__) . '/config/web/app.php'; $app = new Application($config); $runner = new RoadRunner($app); $runner->run();
PSR-7 Conversion
// Convert Yii2 request to PSR-7 $request = Yii::$app->request; $psr7Request = $request->getPsr7Request(); // Convert Yii2 response to PSR-7 $response = Yii::$app->response; $psr7Response = $response->getPsr7Response(); // Emit PSR-7 response $emitter = new yii2\extensions\psrbridge\emitter\SapiEmitter(); $emitter->emit($psr7Response);
Note
This shows the low-level conversion API. Serving a full request in a long-running worker goes through the
handle() → emit → finalize() cycle (or a runner). See
Response lifecycle finalization.
Worker lifecycle defaults
In long-running workers, keep Application lifecycle defaults unless you have a specific requirement:
useSession=truesyncCookieValidation=trueresetUploadedFiles=true
Warning
Keep request-scoped components (request, response, errorHandler, session, user) out of
Application::$persistentComponents.
Components listed in Application::$persistentComponents (defaults to db and cache) keep loaded instances across
requests.
Define lifecycle flags before run() (via config or property setters).
$config = [ 'class' => Application::class, // disable session and cookie validation sync for stateless REST APIs. // keep resetUploadedFiles=true (default) for request isolation. 'useSession' => false, 'syncCookieValidation' => false, 'resetUploadedFiles' => true, ];
Smart Body Parsing
The bridge automatically parses incoming PSR-7 request bodies based on the Content-Type header and your configured
parsers (for example, application/json), ensuring Yii::$app->request->post() works seamlessly in worker mode without
extra boilerplate.
Documentation
For detailed configuration options and advanced usage.
Package information
Quality code
Our social networks
License
统计信息
- 总下载量: 8.53k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 5
- 点击次数: 18
- 依赖项目数: 2
- 推荐数: 0
其他信息
- 授权协议: BSD-3-Clause
- 更新时间: 2025-07-18