我正在尝试从供应商文件夹中包含guzzle http客户端并使用composer。这是我到目前为止所尝试的。
guzzle http客户端文件vendor/guzzle/guzzle/src/Guzzle/Http/Client.php
在composer.json文件中,我包含了
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"files":["vendor/guzzle/guzzle/src/Guzzle/Http/Client.php"],
"psr-4": {
"App\\": "app/"
}
},
我运行了命令composer dumpautoload
。
在我的控制器中,我试图像这样调用api终点
use GuzzleHttp\Client;
$client = new Client(); // this line gives error
$res = $client->get('https://api.fixer.io/latest?symbols=CZK,EURO');
错误为Class 'GuzzleHttp\Client' not found
我在这里缺少的,请帮助我。谢谢。
答案 0 :(得分:6)
简短版本:您正试图实例化一个不存在的类。实例化正确的课程,你就可以全部设定。
长版本:你不应该对你的composer.json做任何想要让Guzzle工作的事情。 Guzzle坚持自动加载的PSR标准,这意味着只要Guzzle通过作曲家进入,你可以实例化Guzzle类而不必担心自动加载。
根据您提到的文件路径,它听起来like you're using Guzzle 3。具体查看the class you're trying to include
namespace Guzzle\Http;
/*...*/
class Client extends AbstractHasDispatcher implements ClientInterface
{
/*...*/
}
Guzzle 3中的guzzle客户端类不是GuzzleHttp\Client
。它的名字是Guzzle\Http\Client
。所以尝试
$client = new \Guzzle\Http\Client;
或
use Guzzle\Http\Client;
$client = new Client;
你应该全力以赴。