Lingara Lingara Tài liệu Cẩm nang API Thư viện Ứng dụng Tạo Ứng dụng web
Ngôn ngữ: Tiếng Việt

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ọi close() 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ằng instanceof.
  • 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ặc null.
  • Chọn ngăn xếp HTTP bằng đối số http. Với Guzzle, luồng cần bật allow_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 tokenCache theo 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.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";
    }
}

Những gì trang này bao bọc