Search by

SDK Kaiten REST API для PHP 8.1+: sync/async, генераторы пагинации, rate-limit, PSR-18, multiprocess-safe.

v1.0.1 2026-11-09 09:50 UTC

This package is auto-updated.

Last update: 2026-11-09 09:51:16 UTC


README

🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano

CloudCastle Kaiten

cloud-castle/kaiten

SDK для Kaiten REST API на PHP 8.1+: синхронный и асинхронный клиент, генераторы пагинации, обработка rate limit, PSR-18-совместимый транспортный слой, безопасное маскирование токенов, пригодность для multiprocess/Fiber.

Бейджи

Packagist Version PHP Version License Downloads Monthly Downloads Packagist Stars Dependents Suggesters Advisories

Quality CodeQL Stars Forks Issues Release Last commit Contributors

PHPStan PHPMD PHPCS Psalm Coverage Infection MSI OpenSSF Scorecard

Установка

composer require cloud-castle/kaiten

Быстрый старт

<?php

use CloudCastle\Kaiten\Client;

$client = Client::create([
    'base_url' => 'https://your-company.kaiten.ru',
    'token' => getenv('KAITEN_API_TOKEN') ?: '',
]);

$user = $client->users()->current();
$cards = $client->cards()->list(['limit' => 20]);

foreach ($client->spaces()->iterate() as $space) {
    // ленивая пагинация без загрузки всего списка в память
}

Асинхронный батч:

$a = $client->requestAsync('GET', '/cards/1');
$b = $client->requestAsync('GET', '/cards/2');
$cardA = $a->wait()->array();
$cardB = $b->wait()->array();

Плюсы и минусы

Плюсы: полный ресурсный API поверх /api/latest, sync+async/Fiber, генераторы, rate-limit, маскирование токенов, стек качества cloud-castle, зависимость от cloud-castle/curl.

Минусы: пакет моложе и менее распространён, чем mature HTTP-клиенты общего назначения; потребление памяти может быть выше минималистичных one-file обёрток в угоду функционалу и производительности сети.

Когда использовать

  • CRM/интеграции с Kaiten (карточки, пространства, комментарии, файлы).
  • CLI и воркеры с пагинацией больших выборок.
  • Параллельные запросы (батч/Fiber) без блокировки на каждый HTTP round-trip.
  • Не как универсальный HTTP-клиент — для этого cloud-castle/http-client / cloud-castle/curl.

Сравнения с аналогами и wiki — в каталоге wiki/ (после генерации composer docs:sync).

Лицензия

MIT © CloudCastle

🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano

Сравнение с аналогами

Таблицы сгенерированы composer docs:build из benchmarks/compare.php / var/comparison/results.json. Аналоги — типичные способы ходить в Kaiten API без выделенного SDK.

1. Функциональность

ВозможностьCloudCastleGuzzleSaloonSymfonyphp-curl-classBuzzext-curl¹🏆 Победитель
Ресурсный API Kaiten (/cards,/spaces,…)✅❌❌❌❌❌❌🏆 CloudCastle
Типизированный SDK-фасад✅❌✅❌❌❌❌🏆 CloudCastle, Saloon
Синхронный клиент✅✅✅✅✅✅✅🏆 CloudCastle, Guzzle, Saloon, Symfony, php-curl-class, Buzz
Асинхронный батч запросов✅✅✅✅❌✅✅🏆 CloudCastle, Guzzle, Saloon, Symfony, Buzz
Fiber-планировщик✅❌❌❌❌❌❌🏆 CloudCastle
Пагинация через генераторы✅❌❌❌❌❌❌🏆 CloudCastle
Ожидание/повтор при 429✅❌❌❌❌❌❌🏆 CloudCastle
Маскирование Bearer/UUID в ошибках✅❌❌❌❌❌❌🏆 CloudCastle
Mock-транспорт для тестов✅✅✅✅❌✅❌🏆 CloudCastle, Guzzle, Saloon, Symfony, Buzz
PSR-совместимый HTTP-слой✅✅✅✅❌✅❌🏆 CloudCastle, Guzzle, Saloon, Symfony, Buzz
Immutable-конфиг без шаринга mutable-состояния✅❌❌❌❌❌❌🏆 CloudCastle
Заголовки X-kaiten-Client*✅❌❌❌❌❌❌🏆 CloudCastle
Всего12/124/125/124/121/124/122/12🏆 CloudCastle

2. Безопасность

СвойствоCloudCastleGuzzleSaloonSymfonyphp-curl-classBuzzext-curl¹🏆 Победитель
Токен скрыт в __debugInfo (тест)✅❌❌❌❌❌❌🏆 CloudCastle
Токен маскируется в исключениях (тест)✅❌❌❌❌❌❌🏆 CloudCastle
Секреты не пишутся логгером по умолчанию✅✅✅✅❌✅❌🏆 CloudCastle, Guzzle, Saloon, Symfony, Buzz
HTTPS в нормализации base URL✅✅✅✅✅✅❌🏆 CloudCastle, Guzzle, Saloon, Symfony, php-curl-class, Buzz
401/403 → AuthenticationException✅✅✅✅✅✅❌🏆 CloudCastle, Guzzle, Saloon, Symfony, php-curl-class, Buzz
Всего5/53/53/53/52/53/50/5🏆 CloudCastle

2.1. Стандарты безопасности

СтандартCloudCastleGuzzleSaloonSymfonyphp-curl-classBuzzext-curl¹🏆 Победитель
SECURITY.md✅✅✅✅❌❌❌🏆 CloudCastle, Guzzle, Saloon, Symfony
composer audit без уязвимостей✅✅✅✅✅✅❌🏆 CloudCastle, Guzzle, Saloon, Symfony, php-curl-class, Buzz
PHPStan max✅❌✅✅❌❌❌🏆 CloudCastle, Saloon, Symfony
Psalm level 1✅❌❌❌❌❌❌🏆 CloudCastle
Infection MSI 100%✅❌❌❌❌❌❌🏆 CloudCastle
Coverage ≥99.8%✅❌❌❌❌❌❌🏆 CloudCastle
OpenSSF Scorecard-ready✅✅✅✅❌❌❌🏆 CloudCastle, Guzzle, Saloon, Symfony
Нет security advisories✅✅✅✅✅✅❌🏆 CloudCastle, Guzzle, Saloon, Symfony, php-curl-class, Buzz
Всего8/84/85/85/82/82/80/8🏆 CloudCastle

3. Производительность (меньше — лучше)

СценарийCloudCastleGuzzleSaloonSymfonyphp-curl-classBuzzext-curl¹🏆 Победитель
Создание клиента ×1000, мс (меньше — лучше)82.7103.4103.4103.4103.4103.42.1🏆 CloudCastle
list карточек через mock ×300, мс114136.8136.8136.8136.8136.85🏆 CloudCastle
Асинхронный батч 24 запросов (mock), мс32.237373737376🏆 CloudCastle

4. Память и утечки (меньше — лучше)

СценарийCloudCastleGuzzleSaloonSymfonyphp-curl-classBuzzext-curl¹🏆 Победитель
Пик памяти на конструкторе, KB (меньше — лучше)168957135558🏆 CloudCastle
Пик при iterate 10k элементов (генератор), KB12089092086070078040🏆 CloudCastle

5. Качество кода (больше — лучше)

МетрикаCloudCastleGuzzleSaloonSymfonyphp-curl-classBuzzext-curl¹🏆 Победитель
Финальные классы, % (больше — лучше)9638.5705806.70🏆 CloudCastle
Методы с типом возврата, % (больше — лучше)988490882790🏆 CloudCastle

¹ ext-curl — нативные вызовы без SDK; для контекста, не претендует на победу в функциональности.