GAPIC

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/
GAPIC v2: Ninguna. Solo se produce un archivo con procesamiento posterior.
Clientes con procesamiento posterior GAPIC v1
src/Google/Ads/GoogleAds/VX/Services/
GAPIC v2
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
);
      
GAPIC v2
$campaignServiceClient
    = $googleAdsClient->getCampaignServiceClient();
$response = $campaignServiceClient->mutateCampaigns(
    MutateCampaignsRequest::build(
      $customerId,
      $campaignOperations
    )
);
      
Patrón 2 GAPIC v1
N/A
GAPIC v2
$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]
);
      
GAPIC v2
$googleAdsServiceClient
    = $googleAdsClient->getGoogleAdsServiceClient();
$response = $googleAdsServiceClient->search(
    SearchGoogleAdsRequest::build($customerId, $query)
        ->setReturnTotalResultsCount(true)
);
      
Patrón 2 GAPIC v1
N/A
GAPIC v2
$googleAdsServiceClient
    = $googleAdsClient->getGoogleAdsServiceClient();
$request = (new SearchGoogleAdsRequest())
    ->setCustomerId($customerId)
    ->setQuery($query)
    ->setReturnTotalResultsCount(true);
$response = $googleAdsServiceClient->search($request);
      
Patrón 3 GAPIC v1
N/A
GAPIC v2
$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])
]);
      
GAPIC v2
$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
GAPIC v2
$geoTargetConstantServiceClient =
    $googleAdsClient->getGeoTargetConstantServiceClient();
$response = $geoTargetConstantServiceClient->suggestGeoTargetConstants(
    new SuggestGeoTargetConstantsRequest([
        'locale' => $locale,
        'country_code' => $countryCode,
        'location_names' => new LocationNames(['names' => $locationNames])
    ])
);