GAPIC

Der Quellcode in src/Google/Ads/GoogleAds/vX der Google Ads API-PHP-Clientbibliothek, wobei X für die Google Ads API steht wird automatisch mit GAPIC (Generated API Client) Generator, basierend auf den veröffentlichten Proto -Dateien.

Der generierte Quellcode wird dann so geändert, dass er Verweise auf Merkmale und Klassen erforderlich, um die Service-Clients zu erstellen, die mit der Google Ads API mithilfe von der GoogleAdsClient-Klasse, die durch Aufrufen von GoogleAdsClientBuilder::build(). Sowohl GoogleAdsClient als auch GoogleAdsClientBuilder sind manuell erstellte Klassen in src/Google/Ads/GoogleAds/Lib/vX/

GAPIC v2-Quellcode

Seit Version v20.1.0 enthält die Clientbibliothek enthält auch eine neue Version des GAPIC-Quellcodes in src/Google/Ads/GoogleAds/vX, das die Übergabe eines Anfrageobjekts an den Dienst unterstützt Kunden . Diese neue Version namens GAPIC v2 dient auch für neue Funktionen. Der frühere GAPIC-Quellcode, GAPIC v1, ist generiert und bis Ende 2023 in jedem Release enthalten.

Mithilfe der PHP-Client-Bibliothek der Google Ads API können Sie die Version auswählen, mit der eine Verknüpfung hergestellt werden soll. GoogleAdsClient mit der Konfigurationseinstellung useGapicV2Source Wenn diese Einstellung auf true generiert die Clientbibliothek ein GoogleAdsClient-Objekt, das ein GAPIC v2-Dienstclients

Generierte Kursorte

Hier sehen Sie die Unterschiede bei den Dateispeicherorten zwischen den GAPIC-Versionen für die zwei Klassentypen:

Von GAPIC generierte Clients und zugehörige Dateien GAPIC v1
src/Google/Ads/GoogleAds/VX/Services/Gapic/
GAPIC v2: keine. Es wird nur eine nachbearbeitete Datei erstellt.
Nachbearbeitete Kunden GAPIC v1
src/Google/Ads/GoogleAds/VX/Services/
GAPIC v2
src/Google/Ads/GoogleAds/VX/Services/Client/

Nutzung

Bei GAPIC v1 müssen Sie jeden Anfrageparameter direkt an eine Methode übergeben, Bei GAPIC v2 müssen Sie stattdessen ein Anfrageobjekt übergeben. Beachten Sie, dass in haben Sie mehr als eine Möglichkeit, ein Anfrageobjekt zu erstellen, Version 2 generiert außerdem eine praktische Methode mit dem Namen build() zur Übergabe von required. Parameter.

Beispiel 1.1: Methoden mit erforderlichen Parametern

Im folgenden Beispielcode wird das Aufrufen von CampaignService::mutate() in GAPIC verglichen v1 und v2. Beachten Sie, dass alle Parameter ($customerId und $operations) erforderliche Parameter, sodass die build() generiert wird, die beide Parameter akzeptiert. im Code von GAPIC v2 ein.

Muster 1 GAPIC v1
$campaignServiceClient
    = $googleAdsClient->getCampaignServiceClient();
$response = $campaignServiceClient->mutateCampaigns(
    $customerId,
    $campaignOperations
);
      
GAPIC v2
$campaignServiceClient
    = $googleAdsClient->getCampaignServiceClient();
$response = $campaignServiceClient->mutateCampaigns(
    MutateCampaignsRequest::build(
      $customerId,
      $campaignOperations
    )
);
      
Muster 2 GAPIC v1
N/A
GAPIC v2
$campaignServiceClient
    = $googleAdsClient->getCampaignServiceClient();
$request = (new MutateCampaignsRequest())
    ->setCustomerId($customerId)
    ->setCampaignOperations($campaignOperations);
$response = $campaignServiceClient->mutateCampaigns($request);
      

Beispiel 1.2: Methoden mit erforderlichen und optionalen Parametern

Im folgenden Beispielcode wird der Aufruf von GoogleAdsServiceClient::search() in GAPIC v1 und v2. In diesem Beispiel wird die build(), die im GAPIC generiert wird, V2-Quellcode akzeptiert nur zwei Parameter ($customerId und $query). sind dies erforderliche Parameter. Um die Gesamtzahl der Ergebnisse anzufordern, ohne die LIMIT-Klausel verwenden, müssen Sie sie explizit mit setReturnTotalResultsCount(). Alternativ können Sie alle Parameter mit dem Konstruktor von SearchGoogleAdsRequest, wie in Muster 3 gezeigt.

Muster 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)
);
      
Muster 2 GAPIC v1
N/A
GAPIC v2
$googleAdsServiceClient
    = $googleAdsClient->getGoogleAdsServiceClient();
$request = (new SearchGoogleAdsRequest())
    ->setCustomerId($customerId)
    ->setQuery($query)
    ->setReturnTotalResultsCount(true);
$response = $googleAdsServiceClient->search($request);
      
Muster 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);
      

Beispiel 2: Methoden nur mit optionalen Parametern

GeoTargetConstantServiceClient::suggestGeoTargetConstants() vergleichen in GAPIC v1 und v2. Da alle Parameter eines GeoTargetConstantServiceClient::suggestGeoTargetConstants() sind optional, In diesem Fall wird build() nicht im Quellcode von GAPIC v2 generiert. Sie müssen Sie das Anfrageobjekt selbst erstellen.

Muster 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);
      
Muster 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])
    ])
);