Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何避免在实例化后发送Guzzle请求?_Php_Laravel_Guzzle - Fatal编程技术网

Php 如何避免在实例化后发送Guzzle请求?

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已停止工作

上下文:Laravel 5。狂饮~5.2。PHP5.4。我正在构建一个与外部API交互的类。我使用服务提供者为这个类提供了一个Guzzle客户机,以避免在方法中实例化客户机

我想缓存结果。如果用户请求在缓存中找到的内容,则返回该内容,而不是执行对所述API的请求

问题:如果我构建了Guzzle客户端,但没有执行请求,应用程序就会崩溃。甚至连PHP的堆栈跟踪都没有。事实上,如果我使用的是Laravel的artisan Service,则会显示一条Windows错误消息,说明PHP CLI已停止工作

现在,每次调用Guzzle客户机时,我都会将它传递给类上的方法

有没有一种方法可以在不发送请求的情况下实例化Guzzle客户端?你会选择什么其他途径来实现这一目标?这是预期的行为吗?

tl;RTM博士

较长版本(来自文档):

创建请求 您可以创建一个请求而不发送它。这对于随时间累积请求或同时发送请求非常有用

$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]);