biplane / yandex-direct

PHP library for Yandex.Direct API.
MIT License
44 stars 23 forks source link

Как получить units после вызова метода #17

Closed feamir closed 5 years ago

feamir commented 5 years ago

Как правильно по задумке получать units после вызова soap метода?

Например после вызова setBid:

$res = $clientUser->getBidsService()->set($bidder);

В PostCallEvent в invoke() units передаются, как их достать? Или этот момент не реализован?

yethee commented 5 years ago

Все сервисы для API 5 поддерживают метод getUnits(). То есть, для вашего примера можно решить вопрос примерно так:

$service = $clientUser->getBidsService();
$response = $service->set($bidder);
$units = $service->getUnits();

В PostCallEvent в invoke() units передаются, как их достать? Или этот момент не реализован?

Да, через событие так же можно получить информацию о баллах. Для этого нужно реализовать обработчик и зарегистрировать его в EventDispatcher.

class MyEventListener implements EventSubscriberInterface
{
    public static function getSubscribedEvents(): array
    {
         return [
             Events::AFTER_REQUEST => 'onAfterRequest',
         ];
    }

    public function onAfterRequest(PostCallEvent $event): void
    {
        // $event->getUnits(); 
    }
}

$clientUser->getEventDispatcher()->addSubscriber(new MyEventListener());

Расширение с помощью событий предоставляет возможность решить какие-то моменты централизованно. Например, реализовать логирование обращений к API.

feamir commented 5 years ago

@yethee Спасибо большое!