如何在 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?的主要内容,如果未能解决你的问题,请参考以下文章