我需要将以下代码迁移到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中使用的等效静态工厂方法是什么?
答案 0 :(得分:0)
不再需要使用静态工厂方法。编码的JSON代码可以直接传递给参数。请查看以下示例。
$response = new \GuzzleHttp\Message\Response(
b200,
['Content-Type' = 'application/json'],
\GuzzleHttp\Streams\Stream::factory(json_encode(['foo' => 'bar' ])
);
来源:aerisweather/GuzzleHttpMock
(README.md
)。
$response = new \GuzzleHttp\Psr7\Response(
200,
['Content-Type' = 'application/json'],
json_encode(['foo' => 'bar' ]
);
来源:systemhaus/GuzzleHttpMock
(README.md
)
另请查看this commit (36a7ef
)以获取更详细的示例。
答案 1 :(得分:0)
您可以使用GuzzleHttp\Psr7\stream_for()
函数。