thecodingmachine/symfony-psr15-bridge

连接 Symfony 中间件(StackPHP)和符合 PSR-15 规范的中间件,用于将 Symfony Http 抽象转换为 PSR-15 并反向转换。

v1.0.0 2018-05-28 15:57 UTC

README

Symfony HttpKernel(又称 StackPHP 中间件)与 PSR-15 中间件之间的桥梁。

Latest Stable Version Total Downloads Latest Unstable Version License Scrutinizer Code Quality Build Status Coverage Status

这些适配器基于现有的 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 的前身)。我很快意识到这实际上是一个完整的重写,因此我决定为它创建一个新的项目。