GAPIC

Il codice sorgente nella directory src/Google/Ads/GoogleAds/vX della libreria client PHP dell'API Google Ads, dove X è la versione dell'API Google Ads, viene generato automaticamente utilizzando il Generatore GAPIC (Generated API Client), in base ai file proto pubblicati.

Il codice sorgente generato viene poi modificato in modo da contenere riferimenti ai tratti e alle classi necessari per creare i client di servizio che funzionano con l'API Google Ads utilizzando la classe GoogleAdsClient, creata chiamando GoogleAdsClientBuilder::build(). Sia GoogleAdsClient che GoogleAdsClientBuilder sono corsi creati manualmente e si trovano in src/Google/Ads/GoogleAds/Lib/vX/.

Sedi dei corsi generate

I client di servizio post-elaborati si trovano in src/Google/Ads/GoogleAds/VX/Services/Client/.

Utilizzo

Devi creare un oggetto request e passarlo al client che vuoi utilizzare. In alcuni casi, hai più di un modo per creare un oggetto request perché alcuni client hanno anche un pratico metodo denominato build() per trasmettere parametri obbligatori.

Esempio 1.1: metodi con parametri obbligatori

Il seguente esempio di codice mostra come chiamare CampaignService::mutate(). Tutti i parametri ($customerId e $operations) sono obbligatori, pertanto nel codice viene generato il build() che accetta entrambi i parametri.

Motivo 1

$campaignServiceClient
    = $googleAdsClient->getCampaignServiceClient();
$response = $campaignServiceClient->mutateCampaigns(
    MutateCampaignsRequest::build(
      $customerId,
      $campaignOperations
    )
);

Motivo 2

$campaignServiceClient
    = $googleAdsClient->getCampaignServiceClient();
$request = (new MutateCampaignsRequest())
    ->setCustomerId($customerId)
    ->setCampaignOperations($campaignOperations);
$response = $campaignServiceClient->mutateCampaigns($request);

Esempio 1.2: metodi con parametri obbligatori e facoltativi

Il seguente codice di esempio chiama GoogleAdsServiceClient::search(). In questo esempio, build() generato nel codice accetta solo due parametri ($customerId e $query) perché sono obbligatori. Per richiedere il numero totale di risultati corrispondenti alla query ignorando la clausola LIMIT, devi impostarlo esplicitamente utilizzando setReturnTotalResultsCount(). In alternativa, puoi passare tutti i parametri insieme al costruttore di SearchGoogleAdsRequest, come mostrato nel pattern 3.

Motivo 1

$googleAdsServiceClient
    = $googleAdsClient->getGoogleAdsServiceClient();
$response = $googleAdsServiceClient->search(
    SearchGoogleAdsRequest::build($customerId, $query)
        ->setReturnTotalResultsCount(true)
);

Motivo 2

$googleAdsServiceClient
    = $googleAdsClient->getGoogleAdsServiceClient();
$request = (new SearchGoogleAdsRequest())
    ->setCustomerId($customerId)
    ->setQuery($query)
    ->setReturnTotalResultsCount(true);
$response = $googleAdsServiceClient->search($request);

Motivo 3

$googleAdsServiceClient
    = $googleAdsClient->getGoogleAdsServiceClient();
$request = (new SearchGoogleAdsRequest([
    'customer_id' => $customerId,
    'query' => $query,
    'return_total_results_count' => true
]);
$response = $googleAdsServiceClient->search($request);

Esempio 2: metodi con solo parametri facoltativi

Questo esempio mostra come chiamare GeoTargetConstantServiceClient::suggestGeoTargetConstants(). Poiché tutti i parametri di GeoTargetConstantServiceClient::suggestGeoTargetConstants() sono facoltativi, in questo caso build() non viene generato nel codice sorgente: devi creare personalmente l'oggetto della richiesta.

Motivo 1

$geoTargetConstantServiceClient =
    $googleAdsClient->getGeoTargetConstantServiceClient();
$request = (new SuggestGeoTargetConstantsRequest())
    ->setLocale($locale)
    ->setCountryCode($countryCode)
    ->setLocationNames(new LocationNames(['names' => $locationNames]));
$response =
    $geoTargetConstantServiceClient->suggestGeoTargetConstants($request);

Motivo 2

$geoTargetConstantServiceClient =
    $googleAdsClient->getGeoTargetConstantServiceClient();
$response = $geoTargetConstantServiceClient->suggestGeoTargetConstants(
    new SuggestGeoTargetConstantsRequest([
        'locale' => $locale,
        'country_code' => $countryCode,
        'location_names' => new LocationNames(['names' => $locationNames])
    ])
);