GAPIC

src/Google/Ads/GoogleAds/vX 中的原始碼 Google Ads API PHP 用戶端程式庫目錄,其中 X 是 Google Ads API 版本) 是系統透過 GAPIC (已產生的 API 用戶端) 產生 產生器 (根據 原始版本 檔案

產生的原始碼隨後會修改為包含對特徵的參照 用來建立與 Google Ads API 搭配使用的服務用戶端 GoogleAdsClient 類別,方法是呼叫 GoogleAdsClientBuilder::build()GoogleAdsClientGoogleAdsClientBuilder是手動建立的課程,位於 src/Google/Ads/GoogleAds/Lib/vX/

GAPIC v2 原始碼

v20.1.0 版開始,用戶端程式庫 也在 src/Google/Ads/GoogleAds/vX,支援將要求物件傳遞至服務 客戶方法。新版本稱為 GAPIC v2 以便改善日後的新功能早期的 GAPIC 原始碼 (GAPIC v1) 直到 2023 年底為止。

Google Ads API PHP 用戶端程式庫可讓您選取要連結的版本 GoogleAdsClient使用配置設定 useGapicV2Source。設定以下時間後: true,用戶端程式庫會產生 GoogleAdsClient 物件,用於建立 GAPIC v2 服務用戶端。

產生的類別位置

以下是 GAPIC 版本之間檔案位置的差異 兩種類別類型

GAPIC 產生的用戶端與相關檔案 GAPIC 第 1 版
src/Google/Ads/GoogleAds/VX/Services/Gapic/
敬上 GAPIC v2:無。系統只會產生後續處理的檔案。
後續處理的用戶端 GAPIC 第 1 版
src/Google/Ads/GoogleAds/VX/Services/
敬上 GAPIC 第 2 版
src/Google/Ads/GoogleAds/VX/Services/Client/

用量

GAPIC v1 會要求您將每個要求參數直接傳遞至 方法, 而 GAPIC v2 則需要您傳送要求物件。請注意,在 在某些情況下,您可以透過多種方式建立要求物件,自 GAPIC 以來 第 2 版也會產生一個名為 build() 的便利方法,用來傳遞「必要」 參數。

示例 1.1:含有必要參數的方法

下列程式碼範例會比較在 GAPIC 中呼叫 CampaignService::mutate() 的情形 第 1 版和第 2 版請注意,所有參數 ($customerId$operations) 都是 必要參數,因此系統會產生可接受兩個參數的 build()

模式 1 GAPIC 第 1 版
$campaignServiceClient
    = $googleAdsClient->getCampaignServiceClient();
$response = $campaignServiceClient->mutateCampaigns(
    $customerId,
    $campaignOperations
);
      
敬上 GAPIC 第 2 版
$campaignServiceClient
    = $googleAdsClient->getCampaignServiceClient();
$response = $campaignServiceClient->mutateCampaigns(
    MutateCampaignsRequest::build(
      $customerId,
      $campaignOperations
    )
);
      
模式 2 GAPIC 第 1 版
N/A
敬上 GAPIC 第 2 版
$campaignServiceClient
    = $googleAdsClient->getCampaignServiceClient();
$request = (new MutateCampaignsRequest())
    ->setCustomerId($customerId)
    ->setCampaignOperations($campaignOperations);
$response = $campaignServiceClient->mutateCampaigns($request);
      

示例 1.2:含有必要參數和選用參數的方法

下列程式碼範例比較GoogleAdsServiceClient::search() GAPIC v1 和 v2在此範例中,在 GAPIC 中產生的 build() v2 原始碼只接受兩個參數 ($customerId$query),因為 這些都是必要參數要求比對相符結果總數 忽略 LIMIT 子句的查詢,您必須使用 setReturnTotalResultsCount()。或者,您也可以 一起繫結至 SearchGoogleAdsRequest 的建構函式,如模式 3 所示。

模式 1 GAPIC 第 1 版
$googleAdsServiceClient
    = $googleAdsClient->getGoogleAdsServiceClient();
$response = $googleAdsServiceClient->search(
    $customerId,
    $query,
    ['returnTotalResultsCount' => true]
);
      
敬上 GAPIC 第 2 版
$googleAdsServiceClient
    = $googleAdsClient->getGoogleAdsServiceClient();
$response = $googleAdsServiceClient->search(
    SearchGoogleAdsRequest::build($customerId, $query)
        ->setReturnTotalResultsCount(true)
);
      
模式 2 GAPIC 第 1 版
N/A
敬上 GAPIC 第 2 版
$googleAdsServiceClient
    = $googleAdsClient->getGoogleAdsServiceClient();
$request = (new SearchGoogleAdsRequest())
    ->setCustomerId($customerId)
    ->setQuery($query)
    ->setReturnTotalResultsCount(true);
$response = $googleAdsServiceClient->search($request);
      
模式 3 GAPIC 第 1 版
N/A
敬上 GAPIC 第 2 版
$googleAdsServiceClient
    = $googleAdsClient->getGoogleAdsServiceClient();
$request = (new SearchGoogleAdsRequest([
    'customer_id' => $customerId,
    'query' => $query,
    'return_total_results_count' => true
]);
$response = $googleAdsServiceClient->search($request);
      

範例 2:僅包含選用參數的方法

以下聊天室服務比較:GeoTargetConstantServiceClient::suggestGeoTargetConstants(): GAPIC v1 和 v2由於 GeoTargetConstantServiceClient::suggestGeoTargetConstants() 為選用項目, 在本例中,GAPIC v2 原始碼中不會產生 build(),您 則需自行建立要求物件

模式 1 GAPIC 第 1 版
$geoTargetConstantServiceClient =
    $googleAdsClient->getGeoTargetConstantServiceClient();
$response = $geoTargetConstantServiceClient->suggestGeoTargetConstants([
    'locale' => $locale,
    'countryCode' => $countryCode,
    'locationNames' => new LocationNames(['names' => $locationNames])
]);
      
敬上 GAPIC 第 2 版
$geoTargetConstantServiceClient =
    $googleAdsClient->getGeoTargetConstantServiceClient();
$request = (new SuggestGeoTargetConstantsRequest())
    ->setLocale($locale)
    ->setCountryCode($countryCode)
    ->setLocationNames(new LocationNames(['names' => $locationNames]));
$response =
    $geoTargetConstantServiceClient->suggestGeoTargetConstants($request);
      
模式 2 GAPIC 第 1 版
N/A
敬上 GAPIC 第 2 版
$geoTargetConstantServiceClient =
    $googleAdsClient->getGeoTargetConstantServiceClient();
$response = $geoTargetConstantServiceClient->suggestGeoTargetConstants(
    new SuggestGeoTargetConstantsRequest([
        'locale' => $locale,
        'country_code' => $countryCode,
        'location_names' => new LocationNames(['names' => $locationNames])
    ])
);