Lingara Lingara مستندات راهنماها API کتابخانه‌ها برنامه‌ها ساخت نسخهٔ وب
زبان: فارسی

PHP

این صفحه از انگلیسی ترجمه شده است. اگر این دو با هم تفاوت داشته باشند، صفحهٔ انگلیسی درست است. خواندن صفحهٔ انگلیسی

کتابخانه PHP همان spinningcatstudios/lingara در Packagist است. به PHP 8.2 یا بالاتر نیاز دارد و ارتباط HTTP را از طریق PSR-18 برقرار می‌کند، پس با Symfony HttpClient، Guzzle یا کلاینتی از خودتان کار می‌کند.

در عمل چگونه است

  • فراخوانی‌ها همگام‌اند. تنها راه لغو، توقف خواندن است: از foreach بیرون بروید، یا close() را روی جریان فراخوانی کنید.
  • جریان با foreach و تنها یک بار خوانده می‌شود. هر رویداد را با instanceof تطبیق دهید.
  • خطاها Lingara\Exception\LingaraException را پیاده‌سازی می‌کنند. در خطای API، errorCode() کد پایدار است و getCode() وضعیت HTTP؛ retryAfter() تعدادی ثانیه است، یا null.
  • پشته HTTP را با آرگومان http انتخاب کنید. با Guzzle، جریان‌ها نیاز دارند allow_url_fopen فعال باشد. با کلاینت PSR-18 خودتان، پیکربندی جریان‌دهی و مهلت‌ها با شماست.
  • در PHP-FPM هر کارگر خالی آغاز می‌شود، پس به کلاینت یک tokenCache از نوع PSR-16 بدهید. بدون آن، هر کارگر توکن خودش را مبادله می‌کند، و سقف ساعتی نقطه پایانی توکن میان همه آن‌ها مشترک است.

نمونه‌های زیر بسته را نصب می‌کنند، یک کلاینت می‌سازند، فهرستی از واژگان را جریانی دریافت می‌کنند و یک خطا را مدیریت می‌کنند.

PHP

composer require spinningcatstudios/lingara:0.1.0-alpha.6

PHP

use Lingara\Client;

$client = new Client(clientId: $clientId, clientSecret: $clientSecret);

PHP

use Lingara\Model\VocabRequest;
use Lingara\Stream\GenerateVocabularyEvent;

$request = new VocabRequest(['level' => 2, 'source_lang' => 'en', 'target_lang' => 'zh', 'count' => 8]);
foreach ($client->generateVocabulary($request) as $event) {
    if ($event instanceof GenerateVocabularyEvent\Item) {
        echo $event->data->getWord(), ': ', $event->data->getTranslation(), "\n";
    }
}

PHP

use Lingara\Exception\ApiException;
use Lingara\Exception\LingaraException;
use Lingara\Exception\MaintenanceException;
use Lingara\Exception\OAuthException;
use Lingara\Exception\TransportException;

try {
    $client->getUsage();
} catch (LingaraException $e) {
    if ($e instanceof ApiException) {
        // A refusal from the API: status, errorCode (stable) and message (localised).
        echo $e->status(), ' ', $e->errorCode(), ': ', $e->getMessage(), "\n";
        echo 'retry after: ', $e->retryAfter() ?? 'not given', "\n";
    } elseif ($e instanceof OAuthException) {
        // The token endpoint refused the credentials or the scopes.
        echo $e->status(), ' ', $e->error(), ': ', $e->description(), "\n";
    } elseif ($e instanceof MaintenanceException) {
        echo 'under maintenance; retry after: ', $e->retryAfter() ?? 'not given', "\n";
    } elseif ($e instanceof TransportException) {
        // No usable answer: connect, tls, reset, timeout, and so on.
        echo 'transport: ', $e->kind()->value, "\n";
    }
}

آنچه این صفحه دربر می‌گیرد