2017-07-28 25 views
1

我有下面的代码:

<?php 

use Zend\Diactoros\Response; 

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

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

我直接传递身体的构造。

我试图让这个响应的主体,仅此而已那么它,但是当我打电话getBody()getBody() - > getContents()这是给我一个空字符串。

我已经试过另一种替代的作品:

<?php 

use Zend\Diactoros\Response; 

$response = new Response; 

$response->getBody()->write('This is the response content'); 

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

它输出:

这是响应内容这是响应内容

为什么第一和简写形式不起作用?

+0

为什么你不使用'的Zend \ HTTP \ Response'? –

+0

因为我根本不使用** Zend Framework **,它只是Zend Framework PSR-7的Zend Diactoros **。 – e200

+0

好的。你的第二个解决方案是正确的,但是当你将一些字符串放到响应体中时,它就像'echo'一样工作,所以你不需要在文件末尾使用'echo'。 –

回答

0

我发现了这个问题,那是我的错。

实际上,Response__constructor获取StreamInterface作为第一个参数,而不是字符串。

StreamInterface实现是您必须编写自己的身体的地方,另外明智的是,您不会得到任何回应。

这里是个好办法:

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

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

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

echo $response->getBody(); 
+0

'$ response = new Response();' '$ response-> getBody() - > write(“This is a response”);' 'echo $ response-> getBody();' 这是一样的。 –

+0

是的,它也可以。 – e200

相关问题