Исходный код в каталоге src/Google/Ads/GoogleAds/v X
клиентской библиотеки PHP API Google Ads, где X — версия API Google Ads, автоматически генерируется с помощью генератора GAPIC (Generated API Client) на основе опубликованных proto-файлов .
Затем сгенерированный исходный код модифицируется, чтобы содержать ссылки на характеристики и классы, необходимые для создания клиентов сервиса, работающих с API Google Ads, с помощью класса GoogleAdsClient
, который создаётся путём вызова GoogleAdsClientBuilder::build()
. GoogleAdsClient
и GoogleAdsClientBuilder
— это вручную созданные классы, расположенные в src/Google/Ads/GoogleAds/Lib/vX/
.
Сгенерированные местоположения классов
Клиенты службы постобработки находятся в src/Google/Ads/GoogleAds/VX/Services/Client/
.
Использование
Необходимо создать объект запроса и передать его клиенту, которого вы хотите использовать. В некоторых случаях существует несколько способов создания объекта запроса, поскольку у некоторых клиентов также есть удобный метод build()
для передачи необходимых параметров.
Пример 1.1: Методы с обязательными параметрами
В следующем примере кода показано, как вызвать CampaignService::mutate()
. Все параметры ( $customerId
и $operations
) являются обязательными, поэтому в коде генерируется метод build()
, принимающий оба параметра.
Выкройка 1
$campaignServiceClient = $googleAdsClient->getCampaignServiceClient(); $response = $campaignServiceClient->mutateCampaigns( MutateCampaignsRequest::build( $customerId, $campaignOperations ) );
Образец 2
$campaignServiceClient = $googleAdsClient->getCampaignServiceClient(); $request = (new MutateCampaignsRequest()) ->setCustomerId($customerId) ->setCampaignOperations($campaignOperations); $response = $campaignServiceClient->mutateCampaigns($request);
Пример 1.2: Методы с обязательными и необязательными параметрами
Следующий пример кода вызывает GoogleAdsServiceClient::search()
. В этом примере метод build()
, сгенерированный в коде, принимает только два параметра ( $customerId
и $query
), поскольку они являются обязательными. Чтобы запросить общее количество результатов, соответствующих запросу, игнорируя предложение LIMIT
, необходимо явно задать его с помощью setReturnTotalResultsCount()
. В качестве альтернативы, вы можете передать все параметры вместе конструктору SearchGoogleAdsRequest
, как показано в шаблоне 3.
Выкройка 1
$googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient(); $response = $googleAdsServiceClient->search( SearchGoogleAdsRequest::build($customerId, $query) ->setReturnTotalResultsCount(true) );
Образец 2
$googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient(); $request = (new SearchGoogleAdsRequest()) ->setCustomerId($customerId) ->setQuery($query) ->setReturnTotalResultsCount(true); $response = $googleAdsServiceClient->search($request);
Образец 3
$googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient(); $request = (new SearchGoogleAdsRequest([ 'customer_id' => $customerId, 'query' => $query, 'return_total_results_count' => true ]); $response = $googleAdsServiceClient->search($request);
Пример 2: Методы только с необязательными параметрами
В этом примере показано, как вызвать GeoTargetConstantServiceClient::suggestGeoTargetConstants()
. Поскольку все параметры GeoTargetConstantServiceClient::suggestGeoTargetConstants()
необязательны, в этом случае build()
в исходном коде не генерируется — вам придётся создать объект запроса самостоятельно.
Выкройка 1
$geoTargetConstantServiceClient = $googleAdsClient->getGeoTargetConstantServiceClient(); $request = (new SuggestGeoTargetConstantsRequest()) ->setLocale($locale) ->setCountryCode($countryCode) ->setLocationNames(new LocationNames(['names' => $locationNames])); $response = $geoTargetConstantServiceClient->suggestGeoTargetConstants($request);
Образец 2
$geoTargetConstantServiceClient = $googleAdsClient->getGeoTargetConstantServiceClient(); $response = $geoTargetConstantServiceClient->suggestGeoTargetConstants( new SuggestGeoTargetConstantsRequest([ 'locale' => $locale, 'country_code' => $countryCode, 'location_names' => new LocationNames(['names' => $locationNames]) ]) );