$response->getBody()->getContents() возвращает пустую строку
У меня есть код ниже:
<?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();
и это выводит:
Это содержание ответа Это содержание ответа
Почему первая и короткая форма не работает?
1 ответ
Решение
Я нашел проблему, это была моя вина.
На самом деле, __constructor Response получает StreamInterface в качестве первого параметра, а не строку.
Реализация StreamInterface - это то, где вы должны написать свое тело, иначе вы не получите ответа.
Вот хороший подход:
$stream = new Stream('php://temp', 'rw');
$stream->write('This is a response');
$response = (new Response($stream));
echo $response->getBody();