Как исправить класс, не найденный в Laravel

В Laravel мне нужно общаться со сторонним API. Они дали мне некоторую реализацию (класс) PHP, которую я могу использовать для подключения и связи с их API. Но когда я пробую это как класс в подпапке папки приложения и добавляю это в свой контроллер, я получаю ошибку класса, не найденную.

Я добавил папку «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);
    }

Search.php в папке Qenner:

/**
 * @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 не найден

Пока я ожидал дамп вывода

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
639
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обновлено

Увидев структуру вашей папки в комментариях, я считаю, что ServiceClient.php и Search.php находятся внутри папки: app\Qenner, следовательно, внутри этих файлов:

везде, где вы используете: namespace QennerSearch;

вы должны использовать: namespace App\Qenner;

а затем внутри вашего контроллера вместо использования: use QennerSearch\ServiceClient;

использовать: namespace App\Qenner\ServiceClient

Пространства имен не похожи на псевдонимы, они должны отражать положение самого файла, если это имеет смысл.

Пожалуйста, попробуйте и дайте мне знать, если это работает.

За исключением контроллера, это все от 3-ей стороны. Я добавил первую часть кода ServiceClient.php к проблеме выше. Кажется, это уже добавлено туда

Johan Boerema 18.07.2019 14:54

пожалуйста, вставьте также свою структуру папок, где какой файл, в каких папках, ServiceClient.php и ваш контроллер

Abhay Maurya 18.07.2019 15:16

приложение\Http\Controllers\TestController.php приложение\Qenner\Search.php приложение\Qenner\ServiceClient.php

Johan Boerema 18.07.2019 15:19

Это сработало, спасибо, теперь я получаю сообщения о не найденных сообщениях другого класса, но сначала я попытаюсь решить их сам :)

Johan Boerema 18.07.2019 15:54

Рад, что смог помочь :) удачного кодирования

Abhay Maurya 18.07.2019 15:56

Другие вопросы по теме