Guzzle 6中的GuzzleHttp \ Stream \ Stream :: factory相当于什么?

时间:2017-09-22 19:34:32

标签: php-7 guzzle6 guzzlehttp

我需要将以下代码迁移到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'

代码使用的是static factory method,在Guzzle 6中似乎是non-existing

在Guzzle 6中使用的等效静态工厂方法是什么?

2 个答案:

答案 0 :(得分:0)

不再需要使用静态工厂方法。编码的JSON代码可以直接传递给参数。请查看以下示例。

Guzzle 5

$response = new \GuzzleHttp\Message\Response(
    b200,
    ['Content-Type' = 'application/json'],
    \GuzzleHttp\Streams\Stream::factory(json_encode(['foo' => 'bar' ])
);

来源:aerisweather/GuzzleHttpMockREADME.md)。

Guzzle 6

$response = new \GuzzleHttp\Psr7\Response(
    200,
    ['Content-Type' = 'application/json'],
    json_encode(['foo' => 'bar' ]
);

来源:systemhaus/GuzzleHttpMockREADME.md

另请查看this commit (36a7ef)以获取更详细的示例。

答案 1 :(得分:0)

您可以使用GuzzleHttp\Psr7\stream_for()函数。