PHP
Bu sayfa İngilizceden çevrilmiştir. İkisi arasında fark varsa İngilizce sayfa doğrudur. İngilizce sayfayı oku
PHP kütüphanesi, Packagist üzerindeki spinningcatstudios/lingara paketidir. PHP 8.2 veya üstünü gerektirir ve HTTP iletişimini PSR-18 üzerinden kurar; bu yüzden Symfony HttpClient, Guzzle ya da kendi istemcinizle çalışır.
Kullanımı nasıldır
- Çağrılar eşzamanlıdır (senkron). İptal etmenin tek yolu okumayı bırakmaktır:
foreachdöngüsünden çıkın ya da akış üzerindeclose()çağırın. - Bir akış
foreachile bir kez okunur. Her olayıinstanceofile eşleştirin. - Hatalar
Lingara\Exception\LingaraExceptionarayüzünü uygular. Bir API hatasındaerrorCode()kararlı koddur,getCode()ise HTTP durumudur;retryAfter()saniye cinsinden bir sayıdır ya danullolur. - HTTP yığınını
httpargümanıyla seçin. Guzzle ile akışlar içinallow_url_fopenetkin olmalıdır. Kendi PSR-18 istemcinizle akışı ve zaman aşımlarını siz yapılandırırsınız. - PHP-FPM altında her worker boş başlar, bu yüzden istemciye bir PSR-16
tokenCacheverin. Bu olmadan her worker kendi belirtecini alır ve belirteç uç noktasının saatlik sınırı hepsi arasında paylaşılır.
Aşağıdaki örnekler paketi kurar, bir istemci oluşturur, bir kelime listesini akış hâlinde alır ve bir hatayı işler.
PHP
composer require spinningcatstudios/lingara:0.1.0-alpha.6PHP
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";
}
}