PHP
Αυτή η σελίδα έχει μεταφραστεί από τα αγγλικά. Αν οι δύο διαφέρουν, η αγγλική σελίδα είναι η σωστή. Διαβάστε την αγγλική σελίδα
Η βιβλιοθήκη για PHP είναι το spinningcatstudios/lingara στο Packagist. Απαιτεί PHP 8.2 ή νεότερη και επικοινωνεί μέσω HTTP με το PSR-18, οπότε λειτουργεί με το Symfony HttpClient, το Guzzle ή έναν δικό σας client.
Πώς διαβάζεται
- Οι κλήσεις είναι σύγχρονες. Ο μόνος τρόπος ακύρωσης είναι να σταματήσετε να διαβάζετε: βγείτε από το
foreach, ή καλέστεclose()στη ροή. - Μια ροή διαβάζεται με
foreach, μία φορά. Αντιστοιχίστε κάθε συμβάν μεinstanceof. - Τα σφάλματα υλοποιούν το
Lingara\Exception\LingaraException. Σε σφάλμα API, τοerrorCode()είναι ο σταθερός κωδικός και τοgetCode()είναι η κατάσταση HTTP· τοretryAfter()είναι ένας αριθμός δευτερολέπτων, ήnull. - Επιλέξτε τη στοίβα HTTP με το όρισμα
http. Με το Guzzle, οι ροές χρειάζονται ενεργοποιημένο τοallow_url_fopen. Με έναν δικό σας PSR-18 client, η ροή και τα χρονικά όρια ρυθμίζονται από εσάς. - Υπό PHP-FPM κάθε worker ξεκινά κενός, οπότε δώστε στον client ένα PSR-16
tokenCache. Χωρίς αυτό, κάθε worker ανταλλάσσει το δικό του token, και το ωριαίο όριο του endpoint token μοιράζεται σε όλους.
Τα παρακάτω δείγματα εγκαθιστούν το πακέτο, δημιουργούν έναν client, μεταδίδουν σε ροή μια λίστα λεξιλογίου και χειρίζονται ένα σφάλμα.
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";
}
}