GAPIC

El código fuente del directorio src/Google/Ads/GoogleAds/vX de la biblioteca cliente de PHP de la API de Google Ads, en el que 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 rasgos y las clases necesarios para crear los clientes de servicio que funcionan con la API de Google Ads a través de la clase GoogleAdsClient, que se crea llamando a GoogleAdsClientBuilder::build(). Tanto GoogleAdsClient como GoogleAdsClientBuilder son clases creadas manualmente y ubicadas en src/Google/Ads/GoogleAds/Lib/vX/.

Ubicaciones de clases generadas

Los clientes de servicio procesados posteriormente 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, ya que 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 ejemplo, 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 búsqueda sin tener en cuenta la cláusula LIMIT, debes establecerla 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])
    ])
);