El código fuente del directorio src/Google/Ads/GoogleAds/vX
de la biblioteca cliente de PHP de la API de Google Ads, donde X es la versión de la API de Google Ads, se genera automáticamente con el generador de GAPIC (cliente de API generado), según los archivos proto publicados.
Luego, se modifica el código fuente generado para que contenga referencias a los atributos y las clases necesarios para crear los clientes de servicio que funcionan con la API de Google Ads mediante la clase GoogleAdsClient
, que se crea llamando a GoogleAdsClientBuilder::build()
. GoogleAdsClient
y GoogleAdsClientBuilder
son clases creadas de forma manual que se encuentran en src/Google/Ads/GoogleAds/Lib/vX/
.
Ubicaciones de clases generadas
Los clientes de servicio posprocesados se encuentran en src/Google/Ads/GoogleAds/VX/Services/Client/
.
Uso
Debes crear un objeto de solicitud y pasarlo al cliente que deseas usar.
En algunos casos, tienes más de una forma de crear un objeto de solicitud porque algunos clientes también tienen un método conveniente llamado build()
para pasar parámetros obligatorios.
Ejemplo 1.1: Métodos con parámetros obligatorios
En el siguiente código de muestra, se muestra cómo llamar a CampaignService::mutate()
. Todos los parámetros ($customerId
y $operations
) son obligatorios, por lo que el build()
que acepta ambos parámetros se genera en el código.
Patrón 1
$campaignServiceClient = $googleAdsClient->getCampaignServiceClient(); $response = $campaignServiceClient->mutateCampaigns( MutateCampaignsRequest::build( $customerId, $campaignOperations ) );
Patrón 2
$campaignServiceClient = $googleAdsClient->getCampaignServiceClient(); $request = (new MutateCampaignsRequest()) ->setCustomerId($customerId) ->setCampaignOperations($campaignOperations); $response = $campaignServiceClient->mutateCampaigns($request);
Ejemplo 1.2: Métodos con parámetros obligatorios y opcionales
En el siguiente código de muestra, se llama a GoogleAdsServiceClient::search()
. En este ejemplo, el build()
que se genera en el código solo acepta dos parámetros ($customerId
y $query
) porque son parámetros obligatorios. Para solicitar la cantidad total de resultados que coinciden con la consulta sin tener en cuenta la cláusula LIMIT
, debes configurarla de forma explícita con setReturnTotalResultsCount()
. Como alternativa, puedes pasar todos los parámetros juntos al constructor de SearchGoogleAdsRequest
, como se muestra en el patrón 3.
Patrón 1
$googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient(); $response = $googleAdsServiceClient->search( SearchGoogleAdsRequest::build($customerId, $query) ->setReturnTotalResultsCount(true) );
Patrón 2
$googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient(); $request = (new SearchGoogleAdsRequest()) ->setCustomerId($customerId) ->setQuery($query) ->setReturnTotalResultsCount(true); $response = $googleAdsServiceClient->search($request);
Patrón 3
$googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient(); $request = (new SearchGoogleAdsRequest([ 'customer_id' => $customerId, 'query' => $query, 'return_total_results_count' => true ]); $response = $googleAdsServiceClient->search($request);
Ejemplo 2: Métodos con solo parámetros opcionales
En este ejemplo, se muestra cómo llamar a GeoTargetConstantServiceClient::suggestGeoTargetConstants()
. Dado que todos los parámetros de GeoTargetConstantServiceClient::suggestGeoTargetConstants()
son opcionales, build()
no se genera en el código fuente en este caso. Debes crear el objeto de solicitud por tu cuenta.
Patrón 1
$geoTargetConstantServiceClient = $googleAdsClient->getGeoTargetConstantServiceClient(); $request = (new SuggestGeoTargetConstantsRequest()) ->setLocale($locale) ->setCountryCode($countryCode) ->setLocationNames(new LocationNames(['names' => $locationNames])); $response = $geoTargetConstantServiceClient->suggestGeoTargetConstants($request);
Patrón 2
$geoTargetConstantServiceClient = $googleAdsClient->getGeoTargetConstantServiceClient(); $response = $geoTargetConstantServiceClient->suggestGeoTargetConstants( new SuggestGeoTargetConstantsRequest([ 'locale' => $locale, 'country_code' => $countryCode, 'location_names' => new LocationNames(['names' => $locationNames]) ]) );