गैप

Google Ads API PHP क्लाइंट लाइब्रेरी की src/Google/Ads/GoogleAds/vX डायरेक्ट्री में मौजूद सोर्स कोड, पब्लिश की गई प्रोटो फ़ाइलों के आधार पर, GAPIC (जनरेट किया गया एपीआई क्लाइंट) जनरेटर का इस्तेमाल करके अपने-आप जनरेट होता है. इसमें X, Google Ads API का वर्शन है.

इसके बाद, जनरेट किए गए सोर्स कोड में बदलाव किया जाता है, ताकि उसमें GoogleAdsClient क्लास का इस्तेमाल करके Google Ads API के साथ काम करने वाला सेवा क्लाइंट बनाने के लिए ज़रूरी लक्षणों और क्लास के रेफ़रंस शामिल किए जा सकें. इस क्लास को GoogleAdsClientBuilder::build() को कॉल करके बनाया गया है. GoogleAdsClient और GoogleAdsClientBuilder, दोनों मैन्युअल तरीके से बनाई गई क्लास हैं, जो src/Google/Ads/GoogleAds/Lib/vX/ में मौजूद हैं.

GAPIC v2 सोर्स कोड

v20.1.0 वर्शन के बाद से, क्लाइंट लाइब्रेरी में src/Google/Ads/GoogleAds/vX में GAPIC सोर्स कोड का एक नया वर्शन भी शामिल है. इससे क्लाइंट के तरीकों के साथ, अनुरोध ऑब्जेक्ट को पास करने की सुविधा मिलती है. GAPIC v2 नाम के इस नए वर्शन को, आने वाले समय में नई सुविधाओं को इस्तेमाल करने के लिए तैयार किया जाना चाहिए. GAPIC का पुराना सोर्स कोड, GAPIC v1 अब भी जनरेट किया गया है और 2023 के आखिर तक इसे हर रिलीज़ के साथ शामिल किया जाता है.

Google Ads API PHP क्लाइंट लाइब्रेरी की मदद से, कॉन्फ़िगरेशन सेटिंग useGapicV2Source का इस्तेमाल करके, GoogleAdsClient से लिंक किया जाने वाला वर्शन चुना जा सकता है. जब यह सेटिंग true पर सेट होती है, तो क्लाइंट लाइब्रेरी एक GoogleAdsClient ऑब्जेक्ट जनरेट करती है, जो GAPIC v2 सेवा क्लाइंट बनाती है.

जनरेट की गई क्लास की जगहें

यहां दो क्लास टाइप के लिए, GAPIC वर्शन के बीच फ़ाइल की जगहों में अंतर बताया गया है:

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() नाम का एक आसान तरीका भी जनरेट करता है.

उदाहरण 1.1: ज़रूरी पैरामीटर वाले तरीके

नीचे दिया गया सैंपल कोड, GAPIC v1 और v2 में CampaignService::mutate() को कॉल करने की तुलना करता है. ध्यान दें कि सभी पैरामीटर ($customerId और $operations) ज़रूरी पैरामीटर हैं. इसलिए, दोनों पैरामीटर को स्वीकार करने वाला build(), GAPIC v2 कोड में जनरेट किया जाता है.

पैटर्न 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: ज़रूरी पैरामीटर और वैकल्पिक पैरामीटर वाले तरीके

नीचे दिया गया सैंपल कोड, GAPIC v1 और v2 में GoogleAdsServiceClient::search() को कॉल करने की तुलना करता है. इस उदाहरण में, GAPIC v2 सोर्स कोड में जनरेट किए गए build() में सिर्फ़ दो पैरामीटर ($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);
      

दूसरा उदाहरण: ऐसे तरीके जिनमें सिर्फ़ वैकल्पिक पैरामीटर दिए गए हों

GAPIC v1 और v2 में GeoTargetConstantServiceClient::suggestGeoTargetConstants() को कॉल करने की तुलना करें. 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])
    ])
);