【发布时间】:2016-08-29 04:50:07
【问题描述】:
我有一个在 Bluemix 中运行的 PHP 应用程序,我想扩展它以调用 RESTful 服务(Twitter 的洞察力)。由于 PHP 没有内置的方式来调用服务,所以我环顾四周并决定使用 Guzzle。
我从它的 Git 下载了 Guzzle 6.0.2 并将 zip 导入我的 httdocs/vendor 路径并重命名了导入的路径 GuzzleHttp 我更改了我的 buildpack 以获得 PHP 5.5并将 composer.json 更新为 Autoload.psr4 属性:
"GuzzleHttp\\": "htdocs/vendor/"
我重新部署了我的应用程序,它仍然有效。
然后我在我的 MainController.php 中添加了以下代码:在其他一些用途之后:
use GuzzleHttp\Client;
然后:
$client = new GuzzleHttp\Client([
// Base URI is used with relative requests
'base_uri' => 'https:myserviceURI.mybluemix.net',
// You can set any number of default request options.
'timeout' => 2.0,
]);
// Use guzzle to send a GET request to Watson Twitter Insights
$guzzleresponse = $client->request('GET', '/api/v1/messages/search');
现在,当我重新部署应用程序时,我得到:
FatalErrorException in HomeController.php line 100:
Class 'App\Http\Controllers\GuzzleHttp\Client' not found
我不知道为什么它在 app\Http\Controllers\ 中查找,但我尝试复制 Guzzle src 文件夹 - 其中包括 Client.php - 那里,将其重命名为 GuzzleHttp,但它仍然失败同样的方式。
我既不是 PHP 也不是 Laravel 专家。我从实习生团队那里继承了代码,所以我不太清楚所有部分是如何组合在一起的。
我有一些问题:
我真的需要在我的工作区中安装 Guzzle,还是会自动从 buildpack 中获取?
我是否以正确的方式导入 Guzzle 代码?
为什么它在我的控制器路径中寻找 Guzzle 客户端?
是否有一个很好的 PHP 示例程序可以驱动 Insights for Twitter?我在 Javascript 中找到了一个,但我需要在服务器端运行?
当然,最重要的是,我需要做些什么才能使其正常工作?
我们将不胜感激任何或所有这些问题的答案
【问题讨论】:
-
如果您对客户端类使用完全限定名称,则需要像
$client = new \GuzzleHttp\Client ...那样导入,或者如果您从use GuzzleHttp\Client;导入 ->$client = new Client ...
标签: php laravel ibm-cloud guzzle