GAPIC

ซอร์สโค้ดใน src/Google/Ads/GoogleAds/vX ของไลบรารีไคลเอ็นต์ Google Ads API PHP โดยที่ X คือ Google Ads API จะสร้างขึ้นโดยอัตโนมัติโดยใช้ GAPIC (ไคลเอ็นต์ API ที่สร้างขึ้น) โปรแกรมสร้างตามที่เผยแพร่ Proto ไฟล์

จากนั้นซอร์สโค้ดที่สร้างขึ้นจะถูกแก้ไขให้มีการอ้างอิงไปยังลักษณะและ ประเภทที่จำเป็นในการสร้างไคลเอ็นต์บริการที่ทำงานร่วมกับ Google Ads API โดยใช้ คลาส GoogleAdsClient ซึ่งสร้างขึ้นด้วยการเรียก GoogleAdsClientBuilder::build() ทั้ง GoogleAdsClient และ GoogleAdsClientBuilder เป็นชั้นเรียนที่สร้างขึ้นด้วยตนเองซึ่งอยู่ใน src/Google/Ads/GoogleAds/Lib/vX/

ซอร์สโค้ด GAPIC v2

ตั้งแต่เวอร์ชัน v20.1.0 ไลบรารีของไคลเอ็นต์ ยังมีซอร์สโค้ด GAPIC เวอร์ชันใหม่ใน src/Google/Ads/GoogleAds/vX ซึ่งรองรับการส่งออบเจ็กต์คำขอไปยังบริการ ของลูกค้า เวอร์ชันใหม่นี้ที่เรียกว่า GAPIC v2 ยังช่วยเตรียมความพร้อม สำหรับฟีเจอร์ใหม่ๆ ในอนาคต ซอร์สโค้ด GAPIC เวอร์ชันก่อนหน้า GAPIC v1 คือ ยังคงสร้างขึ้นและรวมอยู่ในแต่ละรุ่นจนถึงสิ้นปี 2023

ไลบรารีไคลเอ็นต์ PHP ของ Google Ads API ให้คุณเลือกเวอร์ชันที่จะลิงก์ GoogleAdsClient กำลังใช้การตั้งค่าการกำหนดค่า useGapicV2Source เมื่อตั้งค่านี้เป็น true ไลบรารีของไคลเอ็นต์จะสร้างออบเจ็กต์ GoogleAdsClient ที่สร้าง ไคลเอ็นต์บริการ GAPIC v2

สถานที่ของชั้นเรียนที่สร้างขึ้น

ต่อไปนี้เป็นข้อแตกต่างของตำแหน่งไฟล์ระหว่างเวอร์ชัน GAPIC สำหรับ มี 2 ประเภทดังนี้

ไคลเอ็นต์ที่ 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 กำหนดให้คุณต้องส่งอ็อบเจกต์คำขอแทน โปรดทราบว่าใน ในบางกรณี คุณมีวิธีสร้างอ็อบเจกต์คำขอมากกว่า 1 วิธีนับตั้งแต่ GAPIC v2 ยังสร้างเมธอดที่สะดวกชื่อว่า build() สำหรับการส่งผ่าน จําเป็น พารามิเตอร์

ตัวอย่าง 1.1: เมธอดที่มีพารามิเตอร์ที่จำเป็น

โค้ดตัวอย่างต่อไปนี้เปรียบเทียบการเรียกใช้ CampaignService::mutate() ใน GAPIC v1 และ v2 โปรดทราบว่าพารามิเตอร์ทั้งหมด ($customerId และ $operations) พารามิเตอร์ที่จำเป็นเพื่อให้ระบบสร้าง build() ที่ยอมรับพารามิเตอร์ทั้ง 2 รายการ ในโค้ด GAPIC v2

รูปแบบ 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 ในตัวอย่างนี้ build() ที่สร้างขึ้นใน GAPIC ซอร์สโค้ด v2 ยอมรับพารามิเตอร์เพียง 2 รายการ ($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() เป็นตัวเลือกที่ไม่บังคับ build() จะไม่สร้างในซอร์สโค้ด GAPIC v2 ในกรณีนี้ คุณ คุณต้องสร้างออบเจ็กต์คำขอด้วยตัวเอง

รูปแบบ 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])
    ])
);