src/Google/Ads/GoogleAds/vX
中的原始碼
Google Ads API PHP 用戶端程式庫目錄,其中 X 是 Google Ads API
版本) 是系統透過 GAPIC (已產生的 API 用戶端) 產生
產生器 (根據
原始版本
檔案。
產生的原始碼隨後會修改為包含對特徵的參照
用來建立與 Google Ads API 搭配使用的服務用戶端
GoogleAdsClient
類別,方法是呼叫
GoogleAdsClientBuilder::build()
。GoogleAdsClient
和
GoogleAdsClientBuilder
是手動建立的課程,位於
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 第 1 版
src/Google/Ads/GoogleAds/VX/Services/ 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 ); $campaignServiceClient = $googleAdsClient->getCampaignServiceClient(); $response = $campaignServiceClient->mutateCampaigns( MutateCampaignsRequest::build( $customerId, $campaignOperations ) ); |
模式 2 | GAPIC 第 1 版
N/A $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] ); $googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient(); $response = $googleAdsServiceClient->search( SearchGoogleAdsRequest::build($customerId, $query) ->setReturnTotalResultsCount(true) ); |
模式 2 | GAPIC 第 1 版
N/A $googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient(); $request = (new SearchGoogleAdsRequest()) ->setCustomerId($customerId) ->setQuery($query) ->setReturnTotalResultsCount(true); $response = $googleAdsServiceClient->search($request); |
模式 3 | GAPIC 第 1 版
N/A $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]) ]); $geoTargetConstantServiceClient = $googleAdsClient->getGeoTargetConstantServiceClient(); $request = (new SuggestGeoTargetConstantsRequest()) ->setLocale($locale) ->setCountryCode($countryCode) ->setLocationNames(new LocationNames(['names' => $locationNames])); $response = $geoTargetConstantServiceClient->suggestGeoTargetConstants($request); |
模式 2 | GAPIC 第 1 版
N/A $geoTargetConstantServiceClient = $googleAdsClient->getGeoTargetConstantServiceClient(); $response = $geoTargetConstantServiceClient->suggestGeoTargetConstants( new SuggestGeoTargetConstantsRequest([ 'locale' => $locale, 'country_code' => $countryCode, 'location_names' => new LocationNames(['names' => $locationNames]) ]) ); |