GAPIC

کد منبع در دایرکتوری src/Google/Ads/GoogleAds/v X کتابخانه سرویس گیرنده Google Ads API PHP، که در آن X نسخه API Google Ads است، به طور خودکار با استفاده از GAPIC (Generated API Client) تولید می شود. فایل های پروتو منتشر شده

سپس کد منبع تولید شده به گونه ای اصلاح می شود که حاوی ارجاعاتی به صفات و کلاس های مورد نیاز برای ایجاد سرویس گیرندگانی باشد که با Google Ads API با استفاده از کلاس GoogleAdsClient که با فراخوانی GoogleAdsClientBuilder::build() ایجاد می شود، کار می کند. هر دو GoogleAdsClient و GoogleAdsClientBuilder کلاس هایی هستند که به صورت دستی در src/Google/Ads/GoogleAds/Lib/vX/ ایجاد شده اند.

مکان های کلاس ایجاد شده

سرویس گیرندگان خدمات پس از پردازش در src/Google/Ads/GoogleAds/VX/Services/Client/ قرار دارند.

استفاده

شما باید یک شی درخواست ایجاد کنید و آن را به کلاینتی که می خواهید استفاده کنید ارسال کنید. در برخی موارد، شما بیش از یک راه برای ایجاد یک شی درخواست دارید، زیرا برخی از کلاینت ها نیز یک روش مناسب به نام build() برای ارسال پارامترهای مورد نیاز دارند.

مثال 1.1: روش هایی با پارامترهای مورد نیاز

کد نمونه زیر نحوه فراخوانی CampaignService::mutate() را نشان می دهد. همه پارامترها ( $customerId و $operations ) پارامترهای مورد نیاز هستند، بنابراین build() که هر دو پارامتر را می پذیرد در کد ایجاد می شود.

الگوی 1

$campaignServiceClient
    = $googleAdsClient->getCampaignServiceClient();
$response = $campaignServiceClient->mutateCampaigns(
    MutateCampaignsRequest::build(
      $customerId,
      $campaignOperations
    )
);

الگوی 2

$campaignServiceClient
    = $googleAdsClient->getCampaignServiceClient();
$request = (new MutateCampaignsRequest())
    ->setCustomerId($customerId)
    ->setCampaignOperations($campaignOperations);
$response = $campaignServiceClient->mutateCampaigns($request);

مثال 1.2: روش هایی با پارامترهای مورد نیاز و پارامترهای اختیاری

کد نمونه زیر GoogleAdsServiceClient::search() را فراخوانی می کند. در این مثال، build() که در کد تولید می‌شود، تنها دو پارامتر ( $customerId و $query ) را می‌پذیرد، زیرا آنها پارامترهای مورد نیاز هستند. برای درخواست تعداد کل نتایج منطبق با پرس و جو با نادیده گرفتن عبارت LIMIT ، باید آن را به صراحت با استفاده از setReturnTotalResultsCount() تنظیم کنید. همچنین، می‌توانید تمام پارامترها را با هم به سازنده SearchGoogleAdsRequest ارسال کنید، همانطور که در الگوی 3 نشان داده شده است.

الگوی 1

$googleAdsServiceClient
    = $googleAdsClient->getGoogleAdsServiceClient();
$response = $googleAdsServiceClient->search(
    SearchGoogleAdsRequest::build($customerId, $query)
        ->setReturnTotalResultsCount(true)
);

الگوی 2

$googleAdsServiceClient
    = $googleAdsClient->getGoogleAdsServiceClient();
$request = (new SearchGoogleAdsRequest())
    ->setCustomerId($customerId)
    ->setQuery($query)
    ->setReturnTotalResultsCount(true);
$response = $googleAdsServiceClient->search($request);

الگوی 3

$googleAdsServiceClient
    = $googleAdsClient->getGoogleAdsServiceClient();
$request = (new SearchGoogleAdsRequest([
    'customer_id' => $customerId,
    'query' => $query,
    'return_total_results_count' => true
]);
$response = $googleAdsServiceClient->search($request);

مثال 2: روش هایی که فقط پارامترهای اختیاری دارند

این مثال نحوه فراخوانی GeoTargetConstantServiceClient::suggestGeoTargetConstants() را نشان می دهد. از آنجایی که تمام پارامترهای GeoTargetConstantServiceClient::suggestGeoTargetConstants() اختیاری هستند، build() در کد منبع در این مورد تولید نمی شود—شما باید خودتان شی درخواست را ایجاد کنید.

الگوی 1

$geoTargetConstantServiceClient =
    $googleAdsClient->getGeoTargetConstantServiceClient();
$request = (new SuggestGeoTargetConstantsRequest())
    ->setLocale($locale)
    ->setCountryCode($countryCode)
    ->setLocationNames(new LocationNames(['names' => $locationNames]));
$response =
    $geoTargetConstantServiceClient->suggestGeoTargetConstants($request);

الگوی 2

$geoTargetConstantServiceClient =
    $googleAdsClient->getGeoTargetConstantServiceClient();
$response = $geoTargetConstantServiceClient->suggestGeoTargetConstants(
    new SuggestGeoTargetConstantsRequest([
        'locale' => $locale,
        'country_code' => $countryCode,
        'location_names' => new LocationNames(['names' => $locationNames])
    ])
);