PSR-7桥
编辑该页面警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 4.1,不再维护。
读这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。
PSR-7桥
PSR-7桥转换HttpFoundation对象和对象实现HTTP消息定义的接口PSR-7。
安装
1
美元作曲家需要symfony / ps欧宝娱乐app下载地址r-http-message-bridge
或者,您可以克隆的https://github.com/欧宝娱乐app下载地址symfony/psr-http-message-bridge存储库。
请注意
如果你安装这个组件之外的Symfony应用程序,你必须要求欧宝娱乐app下载地址供应商/ autoload.php
文件在你的代码,使作曲家提供的类加载机制。读这篇文章为更多的细节。
这座桥还需要允许将HttpFoundation对象转换为PSR-7 PSR-7实现对象。它提供本机支持Zend Diactoros。使用作曲家(zendframework / zend-diactoros Packagist)或参考项目文档来安装它。欧宝体育电话
使用
从HttpFoundation PSR-7对象
工厂的桥梁提供了一个接口HttpMessageFactoryInterface从HttpFoundation对象构建对象实现PSR-7接口。它还提供了一个默认实现使用Zend Diactoros内部。
下面的代码片段说明了如何转换请求到一个Zend \ Diactoros \ ServerRequest
类实现Psr \ Http \ \ ServerRequestInterface消息
接口:
1 2 3 4 5 6 7 8
使用欧宝娱乐app下载地址\桥\PsrHttpMessage\工厂\DiactorosFactory;使用欧宝娱乐app下载地址\组件\HttpFoundation\请求;美元欧宝娱乐app下载地址symfonyRequest=新请求([]、[][],[],[],[“HTTP_HOST”= >“dunglas.fr”),“内容”);/ / HTTP_HOST服务器密钥必须设置为避免意外错误美元psr7Factory=新DiactorosFactory ();美元psrRequest=美元psr7Factory- >都会(美元欧宝娱乐app下载地址symfonyRequest);
现在,从一个响应到一个Zend \ Diactoros \响应
类实现Psr \ Http \ \ ResponseInterface消息
接口:
1 2 3 4 5 6 7
使用欧宝娱乐app下载地址\桥\PsrHttpMessage\工厂\DiactorosFactory;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;美元欧宝娱乐app下载地址symfonyResponse=新响应(“内容”);美元psr7Factory=新DiactorosFactory ();美元psrResponse=美元psr7Factory- >连接createResponse (美元欧宝娱乐app下载地址symfonyResponse);
HttpFoundation转换对象实现PSR-7接口
另一方面,桥提供工厂接口调用HttpFoundationFactoryInterface建立HttpFoundation对象从对象实现PSR-7接口。
下一个片段解释如何将一个对象实现Psr \ Http \ \ ServerRequestInterface消息
接口请求实例:
1 2 3 4 5 6
使用欧宝娱乐app下载地址\桥\PsrHttpMessage\工厂\HttpFoundationFactory;/ / $ psrRequest Psr的实例\ Http \ \ ServerRequestInterface消息美元httpFoundationFactory=新HttpFoundationFactory ();美元欧宝娱乐app下载地址symfonyRequest=美元httpFoundationFactory- >都会(美元psrRequest);
从一个对象实现Psr \ Http \ \ ResponseInterface消息
到一个响应实例:
1 2 3 4 5 6
使用欧宝娱乐app下载地址\桥\PsrHttpMessage\工厂\HttpFoundationFactory;/ / $ psrResponse Psr的实例\ Http \ \ ResponseInterface消息美元httpFoundationFactory=新HttpFoundationFactory ();美元欧宝娱乐app下载地址symfonyResponse=美元httpFoundationFactory- >连接createResponse (美元psrResponse);