发布于 2015-12-06 07:23:41 | 316 次阅读 | 评论: 0 | 来源: 网络整理
The PSR-7 bridge 将 HttpFoundation 对象转换到实现 HTTP message 接口的对象,定义在 PSR-7。
您可以用 2 种不同的方式安装组件:
Bridge 也需要一个 PSR-7 实现来允许将 HttpFoundation 对象转化为 PSR-7 对象。它为 Zend Diactoros 提供原生支持。使用 Composer(zendframework/zend-diactoros on Packagist)或者查阅项目文档来安装它。
Bridge 提供一个名为 HttpMessageFactoryInterface 的一个 factory 的接口,它可以从 HttpFoundation 对象构造实现 PSR-7 的接口的对象。它也提供了一个内部使用 Zend Diactoros 的默认的实现。
下面的代码片段说明了如何将一个 Request 转换成一个 Zend Diactoros ServerRequest 实现 ServerRequestInterface 接口:
use Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory;
use Symfony\Component\HttpFoundation\Request;
$symfonyRequest = new Request(array(), array(), array(), array(), array(), array('HTTP_HOST' => 'dunglas.fr'), 'Content');
// The HTTP_HOST server key must be set to avoid an unexpected error
$psr7Factory = new DiactorosFactory();
$psrRequest = $psr7Factory->createRequest($symfonyRequest);
现在从一个 Response 到一个实现 ResponseInterface 接口的 Zend Diactoros Response:
use Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory;
use Symfony\Component\HttpFoundation\Response;
$symfonyResponse = new Response('Content');
$psr7Factory = new DiactorosFactory();
$psrResponse = $psr7Factory->createResponse($symfonyResponse);
另一方面,bridge 提供一个名为 HttpFoundationFactoryInterface 的一个 factory 的接口,它可以从实现 PSR-7 的接口的对象构造 HttpFoundation 对象。
下一段代码解释如何将一个实现 ServerRequestInterface 接口的对象转变为一个 Request 实例。
use Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory;
// $psrRequest is an instance of Psr\Http\Message\ServerRequestInterface
$httpFoundationFactory = new HttpFoundationFactory();
$symfonyRequest = $httpFoundationFactory->createRequest($psrRequest);
从一个实现 ResponseInterface 的对象到一个 Response 实例:
use Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory;
// $psrResponse is an instance of Psr\Http\Message\ResponseInterface
$httpFoundationFactory = new HttpFoundationFactory();
$symfonyResponse = $httpFoundationFactory->createResponse($psrResponse);