У меня есть работающее приложение PHP, работающее в Bluemix, которое я хочу расширить, чтобы вызвать службу RESTful (Insights for Twitter). Поскольку PHP не имеет встроенного способа вызова службы, я огляделся и решил использовать Guzzle.
Я загрузил Guzzle 6.0.2 из своего Git и импортировал 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
Я не знаю, почему это выглядит в приложении \ Http \ Controllers \, но я попытался скопировать папку Guzzle src, в которую входит Client.php, там , переименованный в GuzzleHttp, и он все равно терпит неудачу.
Я не являюсь ни PHP, ни экспертом по Laravel. Я унаследовал код от стажера, поэтому я не совсем понимаю, как все части подходят друг другу.
У меня есть несколько вопросов:
Мне действительно нужно было установить Guzzle в мое рабочее пространство или он будет автоматически загружен из buildpack?
Я импортировал код Gzzle в правильном направлении?
Почему он ищет клиента Guzzle на моем пути контроллеров?
Есть ли хорошая примерная программа PHP, которая запускает Insights для Twitter? Я нашел его в Javascript, но мне нужно запустить эту серверную часть?
И, конечно, самое главное, что мне нужно сделать, чтобы заставить это работать?
Следует принимать во внимание ответы на любые или все эти вопросы.
Поскольку вы добавили
use GuzzleHttp\Client;
Вы должны использовать Guzzle Client следующим образом:
$client = new 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, ]);
Он пытается искать Guzzle Client на пути Controllers, вероятно, потому, что ваше пространство имен контроллеров – это App\Http\Controllers
и вы пытаетесь использовать клиента Guzzle, как new GuzzleHttp\Client
$client = new Client(array_merge([ 'base_uri' => 'URL', 'timeout' => 30.0 ]), $options);
/ если вам нужны параметры /
$options = array_merge_recursive([ RequestOptions::AUTH => [ 'Conversation_USERNAME', 'CONVERSATION_PASSWORD', ], RequestOptions::HEADERS => [ 'Content-Type' => 'application/json' ] ], $options);