Недавно я изучаю 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 дней... пожалуйста, помогите






Вы не должны вручную вызывать include или require_once в своем коде — Laravel использует автозагрузчик Composer из коробки, поэтому вы должны просто иметь возможность ссылаться на нужные вам классы, а он сделает все остальное.
Во-первых, убедитесь, что вы установили Bing SDK через Composer, т. е. он добавлен в ваш composer.json и установлен через инструмент командной строки. Если вы просто скачали его сами и поместили в каталог vendor, он не будет работать.
Затем вы сможете вызвать new Microsoft\BindAds\Auth\ServiceClient или любой другой класс, который вы хотите — Composer будет знать, где и как найти этот класс для вас.
Если вы установили его через Composer и у вас по-прежнему возникают проблемы, вам необходимо предоставить точный код, с которым у вас возникли проблемы, а также полную ошибку и трассировку стека, которые вы видите, чтобы мы могли помочь в его отладке.
по-прежнему класс «App\Http\Controllers\Microsoft\BindAds\Auth\ServiceClient» не найден. Возможно ли это, потому что оба файла php имеют пространство имен? Если да, я не могу добавить дополнительное пространство имен в свой BingAdController.php.
Вам нужно будет добавить use Microsoft\BindAds\Auth\ServiceClient в начало вашего файла, чтобы он знал, что нужно искать класс в нужном месте. В противном случае он будет искать класс относительно текущего пространства имен (App\Http\Controllers).
используйте Microsoft\BindAds\Auth\ServiceClient; пространство имен App\Http\Controllers; все еще есть класс не найден :-(
Оператор использования должен идти после оператора пространства имен. Возможно, вам потребуется больше прочитать о том, как пространства имен работают в PHP.
Наконец я нашел решение.
Добавьте «vendor/microsoft/binads» в vendor/composer.json -> classmap.
Не знаю, почему BingAds не обновил composer.json автоматически даже через установку composer.
Я установил SDK через Composer.