GAPIC

Der Quellcode im Verzeichnis src/Google/Ads/GoogleAds/vX der Google Ads API-PHP-Clientbibliothek, wobei X die Google Ads API-Version ist, wird anhand der veröffentlichten Proto-Dateien automatisch mit dem GAPIC (Generated API Client) Generator generiert.

Der generierte Quellcode wird dann so geändert, dass er Verweise auf Merkmale und Klassen enthält, die zum Erstellen der Dienstclients erforderlich sind, die mit der Google Ads API funktionieren. Dazu wird die Klasse GoogleAdsClient verwendet, die durch Aufrufen von GoogleAdsClientBuilder::build() erstellt wird. 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 auch eine neue Version des GAPIC-Quellcodes in src/Google/Ads/GoogleAds/vX, die die Übergabe eines Anfrageobjekts an die Methoden von Dienstclients unterstützt. Diese neue Version namens GAPIC v2 dient auch als Vorbereitung auf zukünftige Funktionen. Der frühere GAPIC-Quellcode, GAPIC v1, wird weiterhin generiert und bis Ende 2023 in jedem Release enthalten.

In der Google Ads API-PHP-Clientbibliothek können Sie mithilfe der Konfigurationseinstellung useGapicV2Source die Version auswählen, die mit GoogleAdsClient verknüpft werden soll. Wenn diese Einstellung auf true gesetzt ist, generiert die Clientbibliothek ein GoogleAdsClient-Objekt, das GAPIC v2-Dienstclients erstellt.

Generierte Kursorte

Im Folgenden sind die Unterschiede bei den Dateispeicherorten zwischen den GAPIC-Versionen für die beiden Klassentypen aufgeführt:

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.
Nachbereitete 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. In einigen Fällen haben Sie mehrere Möglichkeiten, ein Anfrageobjekt zu erstellen, da GAPIC v2 auch eine praktische Methode mit dem Namen build() zum Übergeben der erforderlichen Parameter generiert.

Beispiel 1.1: Methoden mit erforderlichen Parametern

Im folgenden Beispielcode wird der Aufruf von CampaignService::mutate() in GAPIC v1 und v2 verglichen. Beachten Sie, dass alle Parameter ($customerId und $operations) erforderliche Parameter sind. Das build(), das beide Parameter akzeptiert, wird im GAPIC v2-Code generiert.

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 verglichen. In diesem Beispiel akzeptiert die build(), die im GAPIC v2-Quellcode generiert wird, nur zwei Parameter ($customerId und $query), da es sich um erforderliche Parameter handelt. Wenn Sie die Gesamtzahl der Ergebnisse anfordern möchten, die mit der Abfrage übereinstimmen und dabei die LIMIT-Klausel ignorieren, müssen Sie sie explizit mit setReturnTotalResultsCount() festlegen. Alternativ können Sie alle Parameter zusammen an den Konstruktor von SearchGoogleAdsRequest übergeben, 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

Vergleichen Sie den Aufruf von GeoTargetConstantServiceClient::suggestGeoTargetConstants() in GAPIC v1 und v2. Da alle Parameter von GeoTargetConstantServiceClient::suggestGeoTargetConstants() optional sind, wird build() in diesem Fall nicht im GAPIC v2-Quellcode generiert. Sie müssen 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])
    ])
);