Php $response->;getBody()->;getContents()返回空字符串

Php $response->;getBody()->;getContents()返回空字符串,php,response,psr-7,Php,Response,Psr 7,我的代码如下: <?php use Zend\Diactoros\Response; $response = new Response('This is the response content'); echo $response->getBody()->getContents(); echo $response->getBody(); 我发现了问题,那是我的错 实际上,Response _构造函数将StreamInterface作为第一个参数,而不是字符串 St

我的代码如下:

<?php

use Zend\Diactoros\Response;

$response = new Response('This is the response content');

echo $response->getBody()->getContents();
echo $response->getBody();

我发现了问题,那是我的错

实际上,Response _构造函数将StreamInterface作为第一个参数,而不是字符串

StreamInterface实现是您必须编写正文的地方,换句话说,您不会得到响应

以下是一个好方法:

$stream = new Stream('php://temp', 'rw');

$stream->write('This is a response');

$response = (new Response($stream));

echo $response->getBody();

我发现了问题,那是我的错

实际上,Response _构造函数将StreamInterface作为第一个参数,而不是字符串

StreamInterface实现是您必须编写正文的地方,换句话说,您不会得到响应

以下是一个好方法:

$stream = new Stream('php://temp', 'rw');

$stream->write('This is a response');

$response = (new Response($stream));

echo $response->getBody();

为什么不使用
Zend\Http\Response
?'因为我根本没有使用Zend Framework,它只是Zend Diactoros,Zend Framework PSR-7实现。Ok。您的第二个解决方案是正确的,但当您将一些字符串放入响应体时,它的工作方式类似于
echo
,因此您不需要在文件末尾使用
echo
。我发现了问题,这是我的错。实际上,Response _构造函数将StreamInterface作为第一个参数,而不是字符串。StreamInterface实现是您必须编写正文的地方。另一方面,您没有得到响应。为什么不使用
Zend\Http\response
?因为我根本没有使用Zend Framework,它只是Zend Diactoros,Zend Framework PSR-7实现。好的。您的第二个解决方案是正确的,但当您将一些字符串放入响应体时,它的工作方式类似于
echo
,因此您不需要在文件末尾使用
echo
。我发现了问题,这是我的错。实际上,Response _构造函数将StreamInterface作为第一个参数,而不是字符串。StreamInterface实现是您必须编写正文的地方。另一方面,您没有得到响应。
$response=newresponse()
$response->getBody()->write(“这是一个响应”)
echo$response->getBody()它是相同的。
$response=newresponse()
$response->getBody()->write(“这是一个响应”)
echo$response->getBody()它是相同的。