Laravel использует класс php каталога поставщиков

Недавно я изучаю Laravel и пытаюсь внедрить BingAds SDK, чтобы получить некоторые отчеты в свою базу данных, но безуспешно.

У меня есть контроллер с именем BingAdController.php в app/http/Controllers/BingAdController.php.

BingAds SDK устанавливается через composer, они находятся в vendor/microsoft/binads/samples/V12/ReportRequests.php

BingAdController.php

namespace App\Http\Controllers;

use SoapVar;
use SoapFault;
use Exception;
use SoapClient;

use Illuminate\Http\Request;
use App\BingAd;
use App\Http\Controllers\Controller;
use Microsoft\BingAds\V12\Reporting\ReportRequestStatusType;
use Microsoft\BingAds\Auth\ServiceClient;
use Microsoft\BingAds\Auth\ServiceClientType;
use Microsoft\BingAds\Samples\V12\AuthHelper;
use Microsoft\BingAds\Samples\V12\ReportRequestLibrary;

include("/Applications/MAMP/htdocs/laravel/vendor/microsoft/bingads/samples/V12/ReportRequests.php");

class BingAdController extends Controller {
    public function bingadsReporting(){

ReportRequests.php

namespace Microsoft\BingAds\Samples\V12;

// require_once __DIR__ . "/vendor/autoload.php";
require_once "/Applications/MAMP/htdocs/laravel/vendor/autoload.php";

include __DIR__ . "/AuthHelper.php";
include __DIR__ . "/ReportRequestLibrary.php";

use SoapVar;
use SoapFault;
use Exception;

use Microsoft\BingAds\V12\Reporting\ReportRequestStatusType;
use Microsoft\BingAds\Auth\ServiceClient;
use Microsoft\BingAds\Auth\ServiceClientType;
use Microsoft\BingAds\Samples\V12\AuthHelper;
use Microsoft\BingAds\Samples\V12\ReportRequestLibrary;

$GLOBALS['AuthorizationData'] = null;
$GLOBALS['Proxy'] = null;
$GLOBALS['CampaignManagementProxy'] = null; 

class ReportRequests {

    public $DownloadPath, $length, $folder;

Laravel продолжает говорить, что класс не найден... Я застрял в этой проблеме в течение 2 дней... пожалуйста, помогите

Стоит ли изучать 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
568
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы не должны вручную вызывать include или require_once в своем коде — Laravel использует автозагрузчик Composer из коробки, поэтому вы должны просто иметь возможность ссылаться на нужные вам классы, а он сделает все остальное.

Во-первых, убедитесь, что вы установили Bing SDK через Composer, т. е. он добавлен в ваш composer.json и установлен через инструмент командной строки. Если вы просто скачали его сами и поместили в каталог vendor, он не будет работать.

Затем вы сможете вызвать new Microsoft\BindAds\Auth\ServiceClient или любой другой класс, который вы хотите — Composer будет знать, где и как найти этот класс для вас.

Если вы установили его через Composer и у вас по-прежнему возникают проблемы, вам необходимо предоставить точный код, с которым у вас возникли проблемы, а также полную ошибку и трассировку стека, которые вы видите, чтобы мы могли помочь в его отладке.

Я установил SDK через Composer.

Ck Wong 20.02.2019 08:03

по-прежнему класс «App\Http\Controllers\Microsoft\BindAds\Auth\ServiceClient» не найден. Возможно ли это, потому что оба файла php имеют пространство имен? Если да, я не могу добавить дополнительное пространство имен в свой BingAdController.php.

Ck Wong 20.02.2019 08:06

Вам нужно будет добавить use Microsoft\BindAds\Auth\ServiceClient в начало вашего файла, чтобы он знал, что нужно искать класс в нужном месте. В противном случае он будет искать класс относительно текущего пространства имен (App\Http\Controllers).

Dwight 20.02.2019 12:21

используйте Microsoft\BindAds\Auth\ServiceClient; пространство имен App\Http\Controllers; все еще есть класс не найден :-(

Ck Wong 21.02.2019 08:42

Оператор использования должен идти после оператора пространства имен. Возможно, вам потребуется больше прочитать о том, как пространства имен работают в PHP.

Dwight 21.02.2019 12:05
Ответ принят как подходящий

Наконец я нашел решение.

Добавьте «vendor/microsoft/binads» в vendor/composer.json -> classmap.

Не знаю, почему BingAds не обновил composer.json автоматически даже через установку composer.

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