如何在laravel项目中使用vendor文件夹中的类

时间:2017-12-28 19:05:59

标签: php laravel guzzle

我正在尝试从供应商文件夹中包含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

我在这里缺少的,请帮助我。谢谢。

为了获得更好的文件结构,这里是文件位置的屏幕截图 enter image description here

1 个答案:

答案 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;

你应该全力以赴。