如何在 Laravel 4 中自动加载 Guzzle?

Posted

技术标签:

【中文标题】如何在 Laravel 4 中自动加载 Guzzle?【英文标题】:How to autoload Guzzle in Laravel 4? 【发布时间】:2014-05-08 15:34:24 【问题描述】:

我在尝试创建新的 GuzzleHttp/Client 时遇到以下错误:

Symfony \ Component \ Debug \ Exception \ FatalErrorException
Class 'GuzzleHttp\Client' not found

我在 composer.json 自动加载部分设置了以下内容:

autoload: 
    "psr-0": 
        "Guzzle\\": "src/"
    

【问题讨论】:

这在哪里?完整路径以及您是如何安装的? 【参考方案1】:

您不需要将 Guzzle 添加到您的 composer.json,它已经由它自己的 composer.json 自动加载。

狂饮 4

需要 php 5.4.x+

composer require "guzzlehttp/guzzle" "~4.0"

创建客户端:

$client = new \GuzzleHttp\Client();

获取结果:

$response = $client->get('http://api.github.com/users/antonioribeiro');

dd($response->getBody());

狂饮 3

安装它:

composer require "guzzle/guzzle" "~3.0"

创建一个设置基本 URL 的客户端:

$client = new \Guzzle\Service\Client('http://api.github.com/users/');

得到你的回应:

$username = 'antonioribeiro';

$response = $client->get("users/$username")->send();

并显示它:

dd($response);

如果您仍然无法运行,请检查文件vendor/composer/autoload_psr4.php,Guzzle 必须出现在其中。如果没有,请删除您的供应商文件夹并重新安装:

rm -rf vendor
rm composer.lock
composer install

【讨论】:

谢谢安东尼奥,这行得通。这似乎与文档不同(或者我应该正确地学习 rtfm?),因为它建议通过调用 use GuzzleHttp\Client 然后 $client = new Client() 创建一个新客户端,这就是给我错误的原因。可以请教一下吗? 澄清一下,我正在阅读的文档位于此处docs.guzzlephp.org/en/latest 哦!看起来文档在谈论错误的命名空间,不知何故......但它不可能那么错,对吧?我稍后会尝试看看。 Guzzle 提出了将他们使用的命名空间从版本 3(使用 \Guzzle)重命名为 4(使用 \GuzzleHttp)的想法。他们说他们这样做是为了允许同时使用两个版本,这在技术上是正确的,但最终它现在的行为就像一个完全不同的产品。 我是“-1”这个,因为如果你可以避免的话,永远不要建议安装像“dev-master”这样的分支。 Guzzle 是使用语义版本控制软件的一个很好的例子——绝对没有理由不安装像~4.0 这样的编号版本。此外,使用版本可以清楚地表明您在谈论 3.x 而不是 4.x。

以上是关于如何在 Laravel 4 中自动加载 Guzzle?的主要内容,如果未能解决你的问题,请参考以下文章

测试是否在Laravel中调用webhook路由

Laravel psr-4 不自动加载

如何在 laravel 中要求作曲家自动加载器?

laravel 4 中的自动加载助手

如何在 Laravel 5.1 中自动加载自定义类?

Laravel 5.4 - Mix - 如何运行浏览器实时重新加载