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

它输出:

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

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

4

1 回答 1

0

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

实际上, Response __constructor 将 StreamInterface 作为第一个参数,而不是字符串。

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

这是一个好方法:

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

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

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

echo $response->getBody();
于 2017-07-28T23:23:46.317 回答