PHP

توفّر Google مكتبة برامج PHP للتفاعل مع Ad Manager API. ننصح باستخدام مكتبة العميل مع Composer.

للبدء، أنشئ مشروعًا جديدًا في بيئة التطوير المتكاملة التي تختارها أو أضِف التبعية إلى مشروع حالي. تنشر Google عناصر مكتبة العميل في Packagist باسم googleads/ad-manager.

composer.json

"require": {
  "googleads/ad-manager": "^0.16.0"
}

سطر الأوامر

composer require googleads/ad-manager

ضبط بيانات الاعتماد

تستخدم مكتبة برامج PHP بروتوكول OAuth2 وبيانات الاعتماد التلقائية للتطبيق (ADC) للمصادقة.

تبحث ADC عن بيانات الاعتماد بالترتيب في المواقع الجغرافية التالية:

  1. متغيّر البيئة GOOGLE_APPLICATION_CREDENTIALS
  2. بيانات اعتماد المستخدم التي تم إعدادها من خلال واجهة سطر الأوامر في Google Cloud ‏(gcloud CLI)
  3. عند التشغيل على Google Cloud، يتم استخدام حساب الخدمة المرتبط بمورد Google Cloud.

لإنشاء بيانات اعتماد ADC وضبطها، يُرجى الاطّلاع على مقالة المصادقة.

تقديم طلبك الأول

تحتوي كل خدمة على كائن ServiceClient يتضمّن طرقًا لكل طريقة REST. يقرأ المثال التالي عنصر Network.

<?php

use Google\Ads\AdManager\V1\Client\NetworkServiceClient;
use Google\Ads\AdManager\V1\GetNetworkRequest; use Google\Ads\AdManager\V1\Network; use Google\ApiCore\ApiException; /** * Retrieves a `Network` object. * * @param string $formattedName Resource name of Network. * Format: networks/{network_code} * Please see {@see NetworkServiceClient::networkName()} for help formatting this field. */ function get_network_sample(string $formattedName): void { // Create a client. $networkServiceClient = new NetworkServiceClient(); // Prepare the request message. $request = (new GetNetworkRequest()) ->setName($formattedName); // Call the API and handle any network failures. try { /** @var Network $response */ $response = $networkServiceClient->getNetwork($request); printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString()); } catch (ApiException $ex) { printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); } } /** * Helper to execute the sample. * */ function callSample(): void { $formattedName = NetworkServiceClient::networkName('NETWORK_CODE'); get_network_sample($formattedName); }

للاطّلاع على أمثلة على الطرق والموارد الأخرى، يُرجى الانتقال إلى مستودع GitHub googleapis/php-ads-ad-manager.

تسجيل طلبات HTTP والردود عليها

تتيح مكتبة برامج PHP استخدام أدوات تسجيل متوافقة مع PSR-3 لتسجيل طلبات HTTP واستجاباتها. يتم إيقاف التسجيل تلقائيًا.

لتفعيل التسجيل التلقائي في الإخراج المعياري، اضبط متغيّر البيئة GOOGLE_SDK_PHP_LOGGING على true في رمز PHP أو بيئتك:

putenv('GOOGLE_SDK_PHP_LOGGING=true');

$client = new NetworkServiceClient();
export GOOGLE_SDK_PHP_LOGGING=true

بدلاً من ذلك، يمكنك تمرير أي مسجّل متوافق مع PSR-3 عند إنشاء عميل خدمة:

use Monolog\Handler\StreamHandler;
use Monolog\Level;
use Monolog\Logger;

$monologLogger = new Logger('sdk client');
$monologLogger->pushHandler(new StreamHandler('php://stdout', Level::Debug));

$client = new NetworkServiceClient([
    'logger' => $monologLogger
]);

معالجة الأخطاء

في مكتبة برامج PHP، تُظهر جميع أخطاء Ad Manager API استثناءً من النوع ApiException:

أخطاء التحليل

يحدّد حقل سبب الخطأ أنواع الأخطاء بشكل فريد. استخدِم هذا الحقل لتحديد كيفية التعامل مع الخطأ.

try {
    $response = $networkServiceClient->getNetwork($formattedName);
    printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString());
} catch (ApiException $ex) {
    printf('Error message: %s' . PHP_EOL, $ex->getBasicMessage());
    printf('Reason: %s' . PHP_EOL, $ex->getReason());
}

تتضمّن أخطاء Ad Manager API أيضًا request_id فريدًا يمكنك تقديمه إلى فريق الدعم للحصول على المساعدة في تحديد المشاكل وحلّها. يستخرج المثال التالي request_id.

$requestInfo = null;
foreach ($ex->getMetadata() as $metadata) {
    if($metadata["@type"] === "type.googleapis.com/google.rpc.RequestInfo") {
        $requestInfo = $metadata;
        break;
    }
}
if ($requestInfo == null) {
    printf('Unexpected empty RequestInfo');
} else {
    printf('RequestId: %s' . PHP_EOL, $requestInfo['requestId']);
}

إنشاء أسماء الموارد

توفّر مكتبة البرامج فئات مساعدة لإنشاء أسماء الموارد من أرقام التعريف.

use Google\Ads\AdManager\V1\Client\OrderServiceClient;

//  Constructs a String in the format:
//  "networks/{networkCode}/orders/{orderId}"
$orderName = OrderServiceClient::orderName("NETWORK_CODE", "ORDER_ID");

تهيئة إعدادات الخادم الوكيل

تراعي مكتبة برامج PHP إعدادات البيئة HTTP_PROXY وHTTPS_PROXY.