GAPIC

Google Ads API PHP ক্লায়েন্ট লাইব্রেরির src/Google/Ads/GoogleAds/v X ডিরেক্টরিতে সোর্স কোড, যেখানে X হল Google Ads API সংস্করণ, GAPIC (জেনারেটেড 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 ) গ্রহণ করে কারণ তাদের প্রয়োজনীয় প্যারামিটার। একটি পৃষ্ঠার আকার সেট করতে, যা একটি ঐচ্ছিক প্যারামিটার, আপনাকে setPageSize() ব্যবহার করে স্পষ্টভাবে সেট করতে হবে। বিকল্পভাবে, আপনি SearchGoogleAdsRequest এর কনস্ট্রাক্টরের কাছে সমস্ত প্যারামিটার একসাথে পাস করতে পারেন, যেমন প্যাটার্ন 3 এ দেখানো হয়েছে।

প্যাটার্ন 1 GAPIC v1
$googleAdsServiceClient
    = $googleAdsClient->getGoogleAdsServiceClient();
$response = $googleAdsServiceClient->search(
    $customerId,
    $query,
    ['pageSize' => self::PAGE_SIZE]
);
      
GAPIC v2
$googleAdsServiceClient
    = $googleAdsClient->getGoogleAdsServiceClient();
$response = $googleAdsServiceClient->search(
    SearchGoogleAdsRequest::build($customerId, $query)
        ->setPageSize(self::PAGE_SIZE)
);
      
প্যাটার্ন 2 GAPIC v1
N/A
GAPIC v2
$googleAdsServiceClient
    = $googleAdsClient->getGoogleAdsServiceClient();
$request = (new SearchGoogleAdsRequest())
    ->setCustomerId($customerId)
    ->setQuery($query)
    ->setPageSize(self::PAGE_SIZE);
$response = $googleAdsServiceClient->search($request);
      
প্যাটার্ন 3 GAPIC v1
N/A
GAPIC v2
$googleAdsServiceClient
    = $googleAdsClient->getGoogleAdsServiceClient();
$request = (new SearchGoogleAdsRequest([
    'customer_id' => $customerId,
    'query' => $query,
    'page_size' => self::PAGE_SIZE
]);
$response = $googleAdsServiceClient->search($request);
      

উদাহরণ 2: শুধুমাত্র ঐচ্ছিক পরামিতি সহ পদ্ধতি

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