Что эквивалентно фабрике 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 ) для более подробного примера.

Вы можете использовать GuzzleHttp\Psr7\stream_for() функция.

Другие вопросы по тегам