thecodingmachine / symfony-psr15-bridge
连接 Symfony 中间件(StackPHP)和符合 PSR-15 规范的中间件,用于将 Symfony Http 抽象转换为 PSR-15 并反向转换。
v1.0.0
2018-05-28 15:57 UTC
Requires
- php: >=7.0
- psr/http-message: ^1.0
- psr/http-server-middleware: ^1.0
- symfony/http-foundation: ^2.1 | ^3 | ^4
Requires (Dev)
- phpunit/phpunit: ^5.5
- satooshi/php-coveralls: ^1.0
- symfony/http-kernel: ^2.1 | ^3 | ^4
- symfony/psr-http-message-bridge: ^1.0
- zendframework/zend-diactoros: ^1.0
This package is auto-updated.
Last update: 2024-08-29 05:12:29 UTC
README
Symfony HttpKernel(又称 StackPHP 中间件)与 PSR-15 中间件之间的桥梁。
这些适配器基于现有的 symfony/psr-http-message-bridge,它连接了 Symfony 和 PSR-7 HTTP 消息。
安装
推荐通过 Composer 安装 symfony-psr15-bridge。
composer require thecodingmachine/symfony-psr15-bridge
用法
默认情况下,使用 Symfony HttpFoundation 和 HttpKernel。对于 PSR-7,使用 Zend-Diactoros 实现。如果需要,可以更改这些实现。
包装 HttpKernel
<?php // Use the Psr15ToSymfonyBridge adapter $psr15Middleware = new Psr15ToSymfonyBridge($yourHttpKernel); // Handling PSR-7 requests $psr7Response = $psr15Middleware->process($psr7Request, $dummyNextPsr7Middleware);
重要: Symfony Http Kernels 没有所谓的 "next" 中间件的概念。因此,您传递给 process
方法的 "next" PSR-7 中间件将永远不会被调用。
包装 PSR-7 回调
<?php // Use the Psr15ToSymfonyBridge adapter $symfonyKernel = new SymfonyToPsr15Bridge($nextSymfonyMiddleware, $yourPsr15Middleware); // Handling Symfony requests $symfonyResponse = $symfonyKernel->handle($symfonyRequest);
注意:适配器的构造函数接受两个中间件:将被 "delegate" psr15 功能调用的 "next" Symfony 中间件以及要包装的 psr15 中间件。
其他已知的中间件适配器
最初我计划将此项目作为一个 PR 提交给 h4cc/stack-psr7-bridge(该桥接器是在 "PSR-7 中间件" 概念在 http-interop 中标准化之前开发的,而 http-interop 本身又是 PSR-15 的前身)。我很快意识到这实际上是一个完整的重写,因此我决定为它创建一个新的项目。