PHP

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

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

composer require googleads/ad-manager

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

تستخدم مكتبة عملاء PHP بروتوكول OAuth2 وبيانات الاعتماد التلقائية للتطبيق (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; /** * API to retrieve 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 البيئة.