PHP
Trang này được dịch từ tiếng Anh. Nếu hai bản khác nhau, trang tiếng Anh là bản đúng. Đọc trang tiếng Anh
Thư viện PHP là spinningcatstudios/lingara trên Packagist. Thư viện cần PHP 8.2 trở lên và giao tiếp HTTP thông qua PSR-18, nên hoạt động được với Symfony HttpClient, Guzzle hoặc một máy khách của riêng bạn.
Cách sử dụng
- Các lệnh gọi là đồng bộ. Cách duy nhất để hủy là ngừng đọc: thoát khỏi
foreach, hoặc gọiclose()trên luồng. - Luồng được đọc bằng
foreach, một lần duy nhất. So khớp từng sự kiện bằnginstanceof. - Các lỗi triển khai
Lingara\Exception\LingaraException. Với lỗi API,errorCode()là mã ổn định vàgetCode()là mã trạng thái HTTP;retryAfter()là số giây, hoặcnull. - Chọn ngăn xếp HTTP bằng đối số
http. Với Guzzle, luồng cần bậtallow_url_fopen. Với một máy khách PSR-18 của riêng bạn, bạn tự cấu hình việc phát trực tuyến và thời gian chờ. - Trong PHP-FPM, mỗi worker khởi động với trạng thái trống, nên hãy cung cấp cho máy khách một
tokenCachetheo PSR-16. Nếu không có, mỗi worker sẽ tự đổi lấy mã riêng, trong khi giới hạn theo giờ của điểm cuối cấp mã được tất cả các worker dùng chung.
Các mẫu dưới đây cài đặt gói, tạo máy khách, phát trực tuyến một danh sách từ vựng và xử lý lỗi.
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";
}
}