Lingara Lingara Documentatie Gidsen API Bibliotheken Apps Bouwen Webapp
Taal: Nederlands

PHP

Deze pagina is vertaald uit het Engels. Als de twee verschillen, is de Engelse pagina juist. Lees de Engelse pagina

De PHP-bibliotheek is spinningcatstudios/lingara op Packagist. Ze vereist PHP 8.2 of hoger en praat HTTP via PSR-18, dus ze werkt met Symfony HttpClient, Guzzle of een eigen client.

Hoe het leest

  • Aanroepen zijn synchroon. De enige manier om te annuleren is stoppen met lezen: verlaat de foreach, of roep close() aan op de stream.
  • Een stream lees je één keer met foreach. Match elk event met instanceof.
  • Fouten implementeren Lingara\Exception\LingaraException. Bij een API-fout is errorCode() de stabiele code en getCode() de HTTP-status; retryAfter() is een aantal seconden, of null.
  • Kies de HTTP-stack met het argument http. Met Guzzle hebben streams allow_url_fopen ingeschakeld nodig. Met een eigen PSR-18-client configureer je streaming en time-outs zelf.
  • Onder PHP-FPM begint elke worker leeg, dus geef de client een PSR-16-tokenCache. Zonder die cache ruilt elke worker zijn eigen token in, en de uurlimiet van het token-endpoint wordt door ze allemaal gedeeld.

De voorbeelden hieronder installeren het pakket, maken een client aan, streamen een woordenlijst en handelen een fout af.

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

Wat deze pagina omvat