Что эквивалентно фабрике GuzzleHttp\Stream\Stream:: в Guzzle 6?
У меня есть следующий код, который необходимо перенести в Guzzle 6:
use GuzzleHttp\Stream\Stream;
use Drupal\Testing\PHPUnit\DrupalTestCase;
class OpsAbstractTest extends DrupalTestCase {
public function responseMock($value, $code = 200) {
$body = Stream::factory(json_encode($value));
return new Response($code, ['Content-type' => 'application/json'], $body);
}
}
Код не работает после обновления до Guzzle 6 с:
Неустранимая ошибка PHP: класс 'GuzzleHttp\Stream\Stream' не найден
В коде используется статический фабричный метод, который, по-видимому, отсутствует в Guzzle 6.
Какой метод эквивалентной статической фабрики можно использовать в Guzzle 6?
2 ответа
Решение
Больше нет необходимости использовать статический фабричный метод. Кодированный код JSON может быть передан непосредственно в параметр. Проверьте примеры ниже.
Жрать 5
$response = new \GuzzleHttp\Message\Response(
b200,
['Content-Type' = 'application/json'],
\GuzzleHttp\Streams\Stream::factory(json_encode(['foo' => 'bar' ])
);
Источник: aerisweather/GuzzleHttpMock
( README.md
).
Жрут 6
$response = new \GuzzleHttp\Psr7\Response(
200,
['Content-Type' = 'application/json'],
json_encode(['foo' => 'bar' ]
);
Источник: systemhaus/GuzzleHttpMock
( README.md
)
Проверьте также этот коммит ( 36a7ef
) для более подробного примера.