Lingara Lingara Dokumentation Ratgeber API Bibliotheken Apps Erstellen Web-App
Sprache: Deutsch

PHP

Diese Seite ist aus dem Englischen übersetzt. Wenn die beiden voneinander abweichen, ist die englische Seite maßgeblich. Englische Seite lesen

Die PHP-Bibliothek ist spinningcatstudios/lingara auf Packagist. Sie benötigt PHP 8.2 oder neuer und spricht HTTP über PSR-18, sodass sie mit Symfony HttpClient, Guzzle oder einem eigenen Client funktioniert.

Wie sie sich liest

  • Aufrufe sind synchron. Die einzige Möglichkeit abzubrechen ist, mit dem Lesen aufzuhören: Verlassen Sie das foreach oder rufen Sie close() auf dem Stream auf.
  • Ein Stream wird mit foreach gelesen, und zwar einmal. Unterscheiden Sie jedes Event mit instanceof.
  • Fehler implementieren Lingara\Exception\LingaraException. Bei einem API-Fehler ist errorCode() der stabile Code und getCode() der HTTP-Status; retryAfter() ist eine Anzahl von Sekunden oder null.
  • Wählen Sie den HTTP-Stack mit dem Argument http. Mit Guzzle benötigen Streams ein aktiviertes allow_url_fopen. Mit einem eigenen PSR-18-Client liegen Streaming und Timeouts in Ihrer Hand.
  • Unter PHP-FPM startet jeder Worker leer, geben Sie dem Client daher einen PSR-16-tokenCache. Ohne ihn tauscht jeder Worker sein eigenes Token ein, und das stündliche Limit des Token-Endpunkts teilen sich alle.

Die folgenden Beispiele installieren das Paket, erstellen einen Client, streamen eine Vokabelliste und behandeln einen Fehler.

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";
    }
}

Was diese Seite kapselt