Php 如何避免在实例化后发送Guzzle请求?
上下文:Laravel 5。狂饮~5.2。PHP5.4。我正在构建一个与外部API交互的类。我使用服务提供者为这个类提供了一个Guzzle客户机,以避免在方法中实例化客户机 我想缓存结果。如果用户请求在缓存中找到的内容,则返回该内容,而不是执行对所述API的请求 问题:如果我构建了Guzzle客户端,但没有执行请求,应用程序就会崩溃。甚至连PHP的堆栈跟踪都没有。事实上,如果我使用的是Laravel的artisan Service,则会显示一条Windows错误消息,说明PHP CLI已停止工作 现在,每次调用Guzzle客户机时,我都会将它传递给类上的方法 有没有一种方法可以在不发送请求的情况下实例化Guzzle客户端?你会选择什么其他途径来实现这一目标?这是预期的行为吗?tl;RTM博士 较长版本(来自文档): 创建请求 您可以创建一个请求而不发送它。这对于随时间累积请求或同时发送请求非常有用Php 如何避免在实例化后发送Guzzle请求?,php,laravel,guzzle,Php,Laravel,Guzzle,上下文:Laravel 5。狂饮~5.2。PHP5.4。我正在构建一个与外部API交互的类。我使用服务提供者为这个类提供了一个Guzzle客户机,以避免在方法中实例化客户机 我想缓存结果。如果用户请求在缓存中找到的内容,则返回该内容,而不是执行对所述API的请求 问题:如果我构建了Guzzle客户端,但没有执行请求,应用程序就会崩溃。甚至连PHP的堆栈跟踪都没有。事实上,如果我使用的是Laravel的artisan Service,则会显示一条Windows错误消息,说明PHP CLI已停止工作
$request = $client->createRequest('GET', 'http://httpbin.org', [
'headers' => ['X-Foo' => 'Bar']
]);
//根据需要修改请求
$request->setHeader('Baz', 'bar');
创建请求后,可以使用客户端的send()方法发送请求
从这里开始:
这是错误的,不起作用。客户端没有函数
createRequest
$response = $client->send($request);
use GuzzleHttp\Psr7\Request;
$client = new Client([
// Base URI is used with relative requests
'base_uri' => 'http://httpbin.org',
// You can set any number of default request options.
'timeout' => 2.0,
]);
$request = new Request('PUT', 'http://httpbin.org/put');
$response = $client->send($request, ['timeout' => 2]);