如何修复Laravel中找不到的类

时间:2019-07-18 12:09:38

标签: php laravel-5

在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”类

我希望输出转储

1 个答案:

答案 0 :(得分:0)

已更新

在评论中看到您的文件夹结构后,我相信ServiceClient.php和Search.php都位于文件夹app\Qenner内,因此位于这些文件内:

您在使用的任何地方:namespace QennerSearch;

您应该使用:namespace App\Qenner;

,然后在您的控制器内部,而不使用:use QennerSearch\ServiceClient;

使用:namespace App\Qenner\ServiceClient

命名空间与别名不同,如果有意义的话,它们需要反映文件本身的位置。

请尝试一下,让我知道它是否有效。