perf2k2 / direct
PHP wrapper for Yandex Direct API version 5
Requires
- php: 7.*
- guzzlehttp/guzzle: 6.*
- myclabs/php-enum: 1.6.6
- vlucas/phpdotenv: 2.*
Requires (Dev)
- phpunit/phpunit: 6.*
This package is auto-updated.
Last update: 2025-03-19 23:43:02 UTC
README
Нестабильная версия, не используйте в продакшене.
Обертка для работы с API Яндекс.Директа пятой версии.
Особенности
- Все структуры из документации представлены в виде объектов, в том числе enum
- Несколько провайдеров аутентификации, в том числе файл переменных окружения
- Встроенные хелперы для удобной работы с ответами (поддерживаются ответы справочника и статистики)
- Покрытие тестами основных компонентов
Требования
PHP >= 7.0
Зависимости
- myclabs/php-enum (для enum type hint)
- vlucas/phpdotenv (для чтения переменных окружения из файла)
- guzzlehttp/guzzle (для работы с api по http)
Установка
Наиболее быстрый и удобный способ установки - используя Composer:
$ composer require perf2k2/direct
Реализованные методы
Даже если метод реализован, есть вероятность отсутствия поддержки последних его возможностней
Сервисы | Методы | Все |
---|---|---|
Campaigns | add, archive, delete, get, resume, suspend, unarchive, update | ✔ |
AdGroups | add, delete, get, update | ✔ |
Ads | add, archive, delete, get, moderate, resume, suspend, unarchive, update | ✔ |
Creatives | get | ✔ |
Keywords | add, delete, get, resume, suspend, update | ✔ |
Bids | get, set, setAuto | ✔ |
KeywordBids | get, set, setAuto | ✔ |
BidModifiers | add, delete, get, set, toggle | ✔ |
AudienceTargets | add, delete, get, resume, setBids, suspend | ✔ |
RetargetingLists | add, delete, get, update | ✔ |
VCards | add, get, delete | ✔ |
Sitelinks | add, get, delete | ✔ |
AdImages | add, get, delete | ✔ |
AdExtensions | add, get, delete | ✔ |
DynamicTextAdTargets | add, get, delete, resume, suspend, setBids | ✔ |
Changes | check, checkCampaigns, checkDictionaries | ✔ |
TurboPages | get | ✔ |
Leads | get | ✔ |
NegativeKeywordSharedSets | ||
Dictionaries | get | ✔ |
Clients | get, update | ✔ |
AgencyClients | get, update, add | ✔ |
KeywordsResearch | hasSearchVolume | ✔ |
Пример использования
Получение данных из справочника
$reference = new ReferenceClient( new Connection(new Credential('token', 'client')), new JsonReader() ); $criteria = (new AdsSelectionCriteria()) ->setCampaignIds([1000]) ->setTypes([AdTypeEnum::TEXT_AD()]); $method = $reference ->getAdsService() ->getGetMethod() ->setSelectionCriteria($criteria) ->setFieldNames([AdFieldEnum::Id, AdFieldEnum::State]) ->setTextAdFieldNames([ TextAdFieldEnum::VCardId, TextAdFieldEnum::Href, TextAdFieldEnum::SitelinkSetId, ]); $data = $reference->process($method)->getResult('Ads');
Получение данных статистики (отчета)
$stats = new ReportClient( new Connection(new Credential('token', 'client')), new TSVReader() ); $method = $stats ->getReportsService() ->getBuildMethod() ->setSelectionCriteria( (new SelectionCriteria()) ->setDateFrom(new \DateTimeImmutable('yesterday')) ->setDateTo(new \DateTimeImmutable('today')) ) ->setFieldNames([FieldEnum::CampaignId(), FieldEnum::CampaignName(), FieldEnum::CampaignType()]) ->setPage(new Page(10)) ->setOrderBy([new OrderBy(FieldEnum::CampaignId(), OrderBySortOrderEnum::DESCENDING())]) ->setReportName('Campaigns stats') ->setReportType(ReportTypeEnum::CAMPAIGN_PERFORMANCE_REPORT()) ->setDateRangeType(DateRangeTypeEnum::CUSTOM_DATE()) ->setFormat(FormatEnum::TSV()) ->setIncludeVAT(YesNoEnum::NO()) ->setIncludeDiscount(YesNoEnum::NO()); $data = $stats->process($method)->asArray();
Лицензия
GNU GPL v3
Copyright (C) 2017 Romannikov Nikita
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.