在Laravel中,我需要与第三方API通信。 Thay给了我一些PHP实现(类),我可以使用它们实现与API的连接和通信。 但是,当我将其作为App文件夹的子文件夹中的类尝试并将其添加到控制器中时,出现类未找到错误。
我在App文件夹中添加了一个文件夹“ Qenner”(API的提供者)。并在那里复制他们的课程。 在我的控制器中,我正在使用这些类并添加一个代码示例,就像它们将其发送给我一样。
控制器代码(API-KEY替换为实际的密钥):
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Qenner\Search;
use QennerSearch\ServiceClient;
class TestController extends Controller
{
public function index() {
$search = new Search('https://search.qenner.com', 'API-KEY', true, 'nl-NL');
$response = $search->getCriteria([], ['Country'], []);
if (!$response->isError()) {
$criterionSets = $response->getCriterionSets();
$countryCriterionSet = criterionSets[0];
$countries = $countryCriterionSet->getCriteria();
$resultCount = $response->getResultCount();
}
dd($response);
}
Qenner文件夹中的Search.php:
/**
* @file
* Contains QennerSearch\Search.
*/
namespace QennerSearch;
use QennerSearch\model\messages\CriterionTypesResponse;
use QennerSearch\model\messages\CriteriaRequest;
use QennerSearch\model\messages\CriteriaResponse;
use QennerSearch\model\messages\ErrorResponse;
use QennerSearch\model\messages\SearchRequest;
use QennerSearch\model\messages\SearchResponse;
use QennerSearch\model\messages\PriceRequest;
use QennerSearch\model\messages\PriceResponse;
use QennerSearch\model\messages\AccommodationInfoRequest;
use QennerSearch\model\messages\AccommodationInfoResponse;
use QennerSearch\model\messages\AutoCompleteRequest;
use QennerSearch\model\messages\AutoCompleteResponse;
/**
* Class Search, using ServiceClient to communicate, implementing the SearchInterface
*
* @package QennerSearch
*/
class Search extends ServiceClient implements SearchInterface {
.....
该文件夹包含ServiceClient.php
ServiceClient.php
/**
* @file
* Contains QennerSearch\Search.
*/
namespace QennerSearch;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
/**
* Class Search.
*
* @package QennerSearch
*/
class ServiceClient {
protected $http_client = null;
protected $engine_url = null;
protected $api_key = null;
protected $log_calls = false;
protected $locale = null;
protected $last_result_code = 0;
protected $last_error_body = null;
public function __construct($engine_url, $api_key, $log_calls = false, $locale = "nl-NL") {
$this->http_client = new Client();
$this->engine_url = $engine_url;
$this->api_key = $api_key;
$this->log_calls = $log_calls;
$this->locale = $locale;
我收到此错误:
找不到“ QennerSearch \ ServiceClient”类
我希望输出转储
答案 0 :(得分:0)
在评论中看到您的文件夹结构后,我相信ServiceClient.php和Search.php都位于文件夹app\Qenner
内,因此位于这些文件内:
您在使用的任何地方:namespace QennerSearch;
您应该使用:namespace App\Qenner;
,然后在您的控制器内部,而不使用:use QennerSearch\ServiceClient;
使用:namespace App\Qenner\ServiceClient
命名空间与别名不同,如果有意义的话,它们需要反映文件本身的位置。
请尝试一下,让我知道它是否有效。