PHP
Isinalin mula sa Ingles ang pahinang ito. Kung magkaiba ang dalawa, ang pahinang Ingles ang tama. Basahin ang pahinang Ingles
Ang PHP library ay ang spinningcatstudios/lingara sa Packagist. Kailangan nito ang PHP 8.2 o mas bago at nakikipag-usap ito sa HTTP sa pamamagitan ng PSR-18, kaya gumagana ito sa Symfony HttpClient, Guzzle o sa sarili mong client.
Paano ito gamitin
- Synchronous ang mga tawag. Ang tanging paraan para magkansela ay itigil ang pagbasa: lumabas sa
foreach, o tawagin angclose()sa stream. - Binabasa ang stream gamit ang
foreach, nang isang beses. Itugma ang bawat event gamit anginstanceof. - Ang mga error ay nag-i-implement ng
Lingara\Exception\LingaraException. Sa isang API error, angerrorCode()ang matatag na code at anggetCode()ang HTTP status; angretryAfter()ay bilang ng segundo, onull. - Piliin ang HTTP stack gamit ang argument na
http. Sa Guzzle, kailangang naka-enable angallow_url_fopenpara sa mga stream. Sa sarili mong PSR-18 client, ikaw ang magko-configure ng streaming at mga timeout. - Sa PHP-FPM, walang laman ang bawat worker sa pagsisimula, kaya bigyan ang client ng isang PSR-16 na
tokenCache. Kung wala nito, magpapalit ng sariling token ang bawat worker, at pinagsasaluhan nilang lahat ang limitasyon kada oras ng token endpoint.
Ini-install ng mga halimbawa sa ibaba ang package, gumagawa ng client, nag-i-stream ng listahan ng bokabularyo at humahawak ng error.
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";
}
}