繁体   English   中英

如何修复Laravel中找不到的类

[英]How to Fix class not found in Laravel

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

虽然我期望输出转储

更新

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

无论在哪里使用: namespace QennerSearch;

您应该使用: namespace App\\Qenner;

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

使用: namespace App\\Qenner\\ServiceClient

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM