GAPIC

src/Google/Ads/GoogleAds/vX 中的源代码 Google Ads API PHP 客户端库的目录,其中 X 是 Google Ads API 使用 GAPIC(生成的 API 客户端) 生成器,基于已发布的 proto 文件

然后,对生成的源代码进行修改,使其包含对 trait 和 创建与 Google Ads API 配合使用的服务客户端所需的类, GoogleAdsClient 类,该类通过调用 GoogleAdsClientBuilder::build()GoogleAdsClientGoogleAdsClientBuilder 是位于 src/Google/Ads/GoogleAds/Lib/vX/

GAPIC v2 源代码

v20.1.0 版开始,客户端库 还包含新版 GAPIC 源代码, src/Google/Ads/GoogleAds/vX,支持将请求对象传递给服务 客户的方法。这一新版本名为 GAPIC v2, 。早期的 GAPIC 源代码 GAPIC v1 每个版本中仍会生成并包含,直到 2023 年底为止。

通过 Google Ads API PHP 客户端库,您可以选择要链接到的版本 GoogleAdsClient(使用配置设置) useGapicV2Source。当此设置设为 true 时,客户端库会生成一个 GoogleAdsClient 对象,用于创建 GAPIC v2 服务客户端。

生成的课程位置

以下是适用于 两种类:

GAPIC 生成的客户端和相关文件 GAPIC v1
src/Google/Ads/GoogleAds/VX/Services/Gapic/
GAPIC v2:无。系统只会生成经过后处理的文件。
进行后处理的客户 GAPIC v1
src/Google/Ads/GoogleAds/VX/Services/
GAPIC v2
src/Google/Ads/GoogleAds/VX/Services/Client/

用法

GAPIC v1 要求您将每个请求参数直接传递给方法, 而 GAPIC v2 要求您改为传递请求对象。请注意,在 在某些情况下,从 GAPIC 开始,您可以通过多种方式创建请求对象。 v2 还生成了一个名为 build() 的便捷方法,用于传递 required 参数。

示例 1.1:带有必需参数的方法

以下示例代码比较了在 GAPIC 中调用 CampaignService::mutate() v1 和 v2。请注意,所有参数($customerId$operations)均为 必需形参,以便生成接受这两个形参的 build()

模式 1 GAPIC v1
$campaignServiceClient
    = $googleAdsClient->getCampaignServiceClient();
$response = $campaignServiceClient->mutateCampaigns(
    $customerId,
    $campaignOperations
);
      
GAPIC v2
$campaignServiceClient
    = $googleAdsClient->getCampaignServiceClient();
$response = $campaignServiceClient->mutateCampaigns(
    MutateCampaignsRequest::build(
      $customerId,
      $campaignOperations
    )
);
      
模式 2 GAPIC v1
N/A
GAPIC v2
$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 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)
);
      
模式 2 GAPIC v1
N/A
GAPIC v2
$googleAdsServiceClient
    = $googleAdsClient->getGoogleAdsServiceClient();
$request = (new SearchGoogleAdsRequest())
    ->setCustomerId($customerId)
    ->setQuery($query)
    ->setReturnTotalResultsCount(true);
$response = $googleAdsServiceClient->search($request);
      
模式 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);
      

示例 2:仅包含可选参数的方法

比较以下时间段内对 GeoTargetConstantServiceClient::suggestGeoTargetConstants() 的调用 GAPIC v1 和 v2。由于 GeoTargetConstantServiceClient::suggestGeoTargetConstants() 是可选的, 在这种情况下,GAPIC v2 源代码中没有生成 build()。 必须自行创建请求对象

模式 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);
      
模式 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])
    ])
);