GAPIC

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

Der generierte Quellcode wird dann so geändert, dass er Verweise auf Traits und Klassen enthält, die zum Erstellen der Dienstclients erforderlich sind, die mit der Google Ads API arbeiten. 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 unter src/Google/Ads/GoogleAds/vX, der die Übergabe eines Anfrageobjekts an Dienstclient-Methoden unterstützt. Diese neue Version namens GAPIC v2 dient auch als Vorbereitung auf neue Funktionen in Zukunft. Der frühere GAPIC-Quellcode, GAPIC v1, wird weiterhin generiert und bis Ende 2023 in jedem Release enthalten.

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

Generierte Klassenstandorte

Im Folgenden sind die Unterschiede zwischen 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. Nur eine nachbearbeitete Datei wird erstellt.
Nachverarbeitete 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 muss stattdessen ein Anfrageobjekt übergeben werden. In manchen Fällen gibt es mehrere Möglichkeiten, ein Anfrageobjekt zu erstellen, da GAPIC Version 2 auch eine praktische Methode namens build() zum Übergeben der erforderlichen Parameter generiert.

Beispiel 1.1: Methoden mit erforderlichen Parametern

Mit dem folgenden Beispielcode wird das Aufrufen von CampaignService::mutate() in GAPIC v1 und v2 verglichen. Alle Parameter ($customerId und $operations) sind erforderliche Parameter. Der build(), der 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

Mit dem folgenden Beispielcode wird das Aufrufen von GoogleAdsServiceClient::search() in GAPIC v1 und v2 verglichen. In diesem Beispiel akzeptiert die im GAPIC v2-Quellcode generierte build() nur zwei Parameter ($customerId und $query), da es sich um erforderliche Parameter handelt. Um eine Seitengröße (optional) festzulegen, müssen Sie sie explizit mit setPageSize() 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,
    ['pageSize' => self::PAGE_SIZE]
);
      
GAPIC v2
$googleAdsServiceClient
    = $googleAdsClient->getGoogleAdsServiceClient();
$response = $googleAdsServiceClient->search(
    SearchGoogleAdsRequest::build($customerId, $query)
        ->setPageSize(self::PAGE_SIZE)
);
      
Muster 2 GAPIC v1
N/A
GAPIC v2
$googleAdsServiceClient
    = $googleAdsClient->getGoogleAdsServiceClient();
$request = (new SearchGoogleAdsRequest())
    ->setCustomerId($customerId)
    ->setQuery($query)
    ->setPageSize(self::PAGE_SIZE);
$response = $googleAdsServiceClient->search($request);
      
Muster 3 GAPIC v1
N/A
GAPIC v2
$googleAdsServiceClient
    = $googleAdsClient->getGoogleAdsServiceClient();
$request = (new SearchGoogleAdsRequest([
    'customer_id' => $customerId,
    'query' => $query,
    'page_size' => self::PAGE_SIZE
]);
$response = $googleAdsServiceClient->search($request);
      

Beispiel 2: Methoden mit nur optionalen Parametern

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