GAPIC

Il codice sorgente in src/Google/Ads/GoogleAds/vX directory della libreria client PHP dell'API Google Ads, dove X è l'API Google Ads dell'IA, viene generata automaticamente utilizzando il GAPIC (Generato API Client) Builder, in base al modello pubblicato proto .

Il codice sorgente generato viene quindi modificato in modo da contenere riferimenti a trait necessarie per creare client di servizi compatibili con l'API Google Ads utilizzando la classe GoogleAdsClient, creata chiamando GoogleAdsClientBuilder::build(). Sia GoogleAdsClient che GoogleAdsClientBuilder sono corsi creati manualmente che si trovano in src/Google/Ads/GoogleAds/Lib/vX/.

Codice sorgente GAPIC v2

Dalla versione v20.1.0, la libreria client include anche una nuova versione del codice sorgente GAPIC in src/Google/Ads/GoogleAds/vX che supporta il passaggio di un oggetto di richiesta al servizio dei clienti di machine learning. Questa nuova versione, chiamata GAPIC v2, serve anche come versione per le nuove funzionalità in futuro. Il codice sorgente GAPIC precedente, GAPIC v1, è comunque generati e inclusi in ogni release fino alla fine del 2023.

La libreria client PHP dell'API Google Ads ti consente di selezionare la versione da collegare GoogleAdsClient utilizzando l'impostazione di configurazione useGapicV2Source Quando questa impostazione è impostata su true, la libreria client genera un oggetto GoogleAdsClient che crea Client di servizio GAPIC v2.

Sedi generate dal corso

Di seguito sono riportate le differenze nelle posizioni dei file tra le versioni di GAPIC per la due tipi di classi:

Client generati da GAPIC e file correlati GAPIC versione 1
src/Google/Ads/GoogleAds/VX/Services/Gapic/
GAPIC v2: nessuno. Viene generato solo un file post-elaborato.
Client post-elaborati GAPIC versione 1
src/Google/Ads/GoogleAds/VX/Services/
GAPIC v2
src/Google/Ads/GoogleAds/VX/Services/Client/

Utilizzo

GAPIC v1 richiede il passaggio di ogni parametro di richiesta direttamente a un metodo, mentre GAPIC v2 richiede il passaggio di un oggetto di richiesta. Tieni presente che In alcuni casi, esiste più di un modo per creare un oggetto di richiesta, dato che GAPIC La versione v2 genera anche un comodo metodo denominato build() per passare required parametri.

Esempio 1.1: metodi con parametri obbligatori

Il codice campione seguente confronta le chiamate a CampaignService::mutate() in GAPIC v1 e v2. Tieni presente che tutti i parametri ($customerId e $operations) vengono parametri obbligatori, pertanto viene generato il build() che accetta entrambi i parametri nel codice di GAPIC v2.

Schema 1 GAPIC versione 1
$campaignServiceClient
    = $googleAdsClient->getCampaignServiceClient();
$response = $campaignServiceClient->mutateCampaigns(
    $customerId,
    $campaignOperations
);
      
GAPIC v2
$campaignServiceClient
    = $googleAdsClient->getCampaignServiceClient();
$response = $campaignServiceClient->mutateCampaigns(
    MutateCampaignsRequest::build(
      $customerId,
      $campaignOperations
    )
);
      
Schema 2 GAPIC versione 1
N/A
GAPIC v2
$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 campione confronta la chiamata di GoogleAdsServiceClient::search() in GAPIC v1 e v2. In questo esempio, il valore build() generato in GAPIC Il codice sorgente v2 accetta solo due parametri ($customerId e $query) perché sono parametri obbligatori. Per richiedere il numero totale di risultati corrispondenti ignorando la clausola LIMIT, devi impostarla in modo esplicito utilizzando setReturnTotalResultsCount(). In alternativa, puoi passare tutti i parametri al costruttore di SearchGoogleAdsRequest, come mostrato nel modello 3.

Schema 1 GAPIC versione 1
$googleAdsServiceClient
    = $googleAdsClient->getGoogleAdsServiceClient();
$response = $googleAdsServiceClient->search(
    $customerId,
    $query,
    ['returnTotalResultsCount' => true]
);
      
GAPIC v2
$googleAdsServiceClient
    = $googleAdsClient->getGoogleAdsServiceClient();
$response = $googleAdsServiceClient->search(
    SearchGoogleAdsRequest::build($customerId, $query)
        ->setReturnTotalResultsCount(true)
);
      
Schema 2 GAPIC versione 1
N/A
GAPIC v2
$googleAdsServiceClient
    = $googleAdsClient->getGoogleAdsServiceClient();
$request = (new SearchGoogleAdsRequest())
    ->setCustomerId($customerId)
    ->setQuery($query)
    ->setReturnTotalResultsCount(true);
$response = $googleAdsServiceClient->search($request);
      
Schema 3 GAPIC versione 1
N/A
GAPIC v2
$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

Confronta le chiamate a GeoTargetConstantServiceClient::suggestGeoTargetConstants() in GAPIC v1 e v2. Poiché tutti i parametri GeoTargetConstantServiceClient::suggestGeoTargetConstants() sono facoltativi, In questo caso, build() non viene generato nel codice sorgente GAPIC v2. creare personalmente l'oggetto della richiesta.

Schema 1 GAPIC versione 1
$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);
      
Schema 2 GAPIC versione 1
N/A
GAPIC v2
$geoTargetConstantServiceClient =
    $googleAdsClient->getGeoTargetConstantServiceClient();
$response = $geoTargetConstantServiceClient->suggestGeoTargetConstants(
    new SuggestGeoTargetConstantsRequest([
        'locale' => $locale,
        'country_code' => $countryCode,
        'location_names' => new LocationNames(['names' => $locationNames])
    ])
);