El código fuente de src/Google/Ads/GoogleAds/vX
directorio de la biblioteca cliente de PHP de la API de Google Ads, en el que X es la API de Google Ads.
se genera automáticamente mediante el cliente de API generado por GAPIC
Generador, basado en la publicación
protocolo
archivos.
Luego, el código fuente generado se modifica para contener referencias a traits y
clases requeridas para crear los clientes de servicio que funcionan con la API de Google Ads usando
la clase GoogleAdsClient
, que se crea llamando
GoogleAdsClientBuilder::build()
Tanto GoogleAdsClient
como
GoogleAdsClientBuilder
son clases creadas manualmente ubicadas en
src/Google/Ads/GoogleAds/Lib/vX/
Código fuente de GAPIC v2
A partir de la versión v20.1.0, la biblioteca cliente
también incluye una nueva versión del código fuente GAPIC en
src/Google/Ads/GoogleAds/vX
, que admite el paso de un objeto de solicitud al servicio
de los clientes . Esta nueva versión, llamada GAPIC v2, también sirve como preparación.
para conocer nuevas funciones en el futuro. El código fuente GAPIC anterior, GAPIC v1, es
se seguirán generando y se incluirán con cada versión hasta finales de 2023.
La biblioteca cliente de PHP de la API de Google Ads te permite seleccionar la versión a la que deseas vincular.
GoogleAdsClient
usando la configuración
useGapicV2Source
Cuando este parámetro se establece en
true
, la biblioteca cliente genera un objeto GoogleAdsClient
que crea
Clientes de servicio GAPIC v2.
Ubicaciones de clases generadas
A continuación, presentamos las diferencias en la ubicación de los archivos entre las versiones de GAPIC para el hay dos tipos de clases:
Clientes generados por GAPIC y archivos relacionados | GAPIC v1
src/Google/Ads/GoogleAds/VX/Services/Gapic/ |
Clientes con procesamiento posterior | GAPIC v1
src/Google/Ads/GoogleAds/VX/Services/ src/Google/Ads/GoogleAds/VX/Services/Client/ |
Uso
GAPIC v1 requiere que pases cada parámetro de solicitud directamente a un método,
mientras que GAPIC v2 requiere que pases un objeto de solicitud en su lugar. Ten en cuenta que en
en algunos casos, tiene más de una manera
de crear un objeto de solicitud, ya que GAPIC
La versión 2 también genera un método conveniente llamado build()
para pasar el estado obligatorio
parámetros.
Ejemplo 1.1: Métodos con parámetros obligatorios
En el siguiente código de muestra, se compara la llamada a CampaignService::mutate()
en GAPIC
v1 y v2. Ten en cuenta que todos los parámetros ($customerId
y $operations
) se
parámetros obligatorios, por lo que se genera el build()
que acepta ambos parámetros
en el código GAPIC v2.
Patrón 1 | GAPIC v1
$campaignServiceClient = $googleAdsClient->getCampaignServiceClient(); $response = $campaignServiceClient->mutateCampaigns( $customerId, $campaignOperations ); $campaignServiceClient = $googleAdsClient->getCampaignServiceClient(); $response = $campaignServiceClient->mutateCampaigns( MutateCampaignsRequest::build( $customerId, $campaignOperations ) ); |
Patrón 2 | GAPIC v1
N/A $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 compara la llamada a GoogleAdsServiceClient::search()
en
GAPIC v1 y v2. En este ejemplo, el build()
que se genera en GAPIC
El código fuente v2 solo acepta dos parámetros ($customerId
y $query
) porque
son parámetros obligatorios. Cómo solicitar el número total de resultados que coinciden
la consulta ignorando la cláusula LIMIT
, debes configurarla de forma explícita
setReturnTotalResultsCount()
Como alternativa, puedes pasar todos los parámetros
con el constructor de SearchGoogleAdsRequest
, como se muestra en el patrón 3.
Patrón 1 | GAPIC v1
$googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient(); $response = $googleAdsServiceClient->search( $customerId, $query, ['returnTotalResultsCount' => true] ); $googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient(); $response = $googleAdsServiceClient->search( SearchGoogleAdsRequest::build($customerId, $query) ->setReturnTotalResultsCount(true) ); |
Patrón 2 | GAPIC v1
N/A $googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient(); $request = (new SearchGoogleAdsRequest()) ->setCustomerId($customerId) ->setQuery($query) ->setReturnTotalResultsCount(true); $response = $googleAdsServiceClient->search($request); |
Patrón 3 | GAPIC v1
N/A $googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient(); $request = (new SearchGoogleAdsRequest([ 'customer_id' => $customerId, 'query' => $query, 'return_total_results_count' => true ]); $response = $googleAdsServiceClient->search($request); |
Ejemplo 2: Métodos solo con parámetros opcionales
Compara las llamadas a GeoTargetConstantServiceClient::suggestGeoTargetConstants()
en
GAPIC v1 y v2. Como todos los parámetros de
GeoTargetConstantServiceClient::suggestGeoTargetConstants()
son opcionales,
En este caso, build()
no se genera en el código fuente de GAPIC v2; tú
tendrás que crear el objeto Request.
Patrón 1 | GAPIC 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); |
Patrón 2 | GAPIC v1
N/A $geoTargetConstantServiceClient = $googleAdsClient->getGeoTargetConstantServiceClient(); $response = $geoTargetConstantServiceClient->suggestGeoTargetConstants( new SuggestGeoTargetConstantsRequest([ 'locale' => $locale, 'country_code' => $countryCode, 'location_names' => new LocationNames(['names' => $locationNames]) ]) ); |