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