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

$response->getBody()->getContents() returning empty string

我有以下代码:

<?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();

它输出:

This is the response content This is the response content

为什么第一个和简短的格式不起作用?

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

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

StreamInterface 实现是您必须编写正文的地方,否则,您将得不到任何响应。

这是个好方法:

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

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

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

echo $response->getBody();