PHP

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

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

composer.json

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

سطر الأوامر

composer require googleads/ad-manager

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

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

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

  1. متغيّر البيئة GOOGLE_APPLICATION_CREDENTIALS
  2. إعداد بيانات اعتماد المستخدم من خلال واجهة سطر الأوامر (CLI) في 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 بإعدادات البيئة.