Встановлення SDK Bundle
Крок 0: Рецепти Symfony Flex
Щоб Flex зробив налаштування автоматично, додайте репозиторій рецептів UFO-Tech у composer.json проєкту:
{
"extra": {
"symfony": {
"endpoint": [
"https://api.github.com/repos/ufo-tech/recipes/contents/index.json?ref=main",
"flex://defaults"
]
}
}
}
Крок 1: Встановлення
composer require ufo-tech/json-rpc-sdk-bundle
Рецепт реєструє бандл, створює config/packages/json_rpc_sdk.yaml і додає в .env змінні першого постачальника.
Крок 2: Реєстрація бандла
Без рецепта додайте вручну в config/bundles.php:
return [
// ...
Ufo\JsonRpcSdkBundle\JsonRpcSdkBundle::class => ['all' => true],
];
Крок 3: Налаштування
# config/packages/json_rpc_sdk.yaml
json_rpc_sdk:
namespace: App\Sdk
vendors:
- name: Orders
url: '%env(resolve:ORDERS_API_URL)%'
token_key: '%env(resolve:ORDERS_API_TOKEN_KEY)%'
token: '%env(resolve:ORDERS_API_TOKEN)%'
# .env.local
ORDERS_API_URL=https://orders.example.com/rpc
ORDERS_API_TOKEN_KEY=Ufo-RPC-Token
ORDERS_API_TOKEN=change-me
Усі параметри — на сторінці Налаштування.
Простір імен із namespace має бути в PSR-4 автозавантаження і в ресурсі сервісів застосунку з autowire і autoconfigure. Для стандартного Symfony-проєкту App\Sdk → src/Sdk/ це вже так.
Крок 4: Генерація
bin/console ufo:sdk:generate
У src/Sdk/Orders/ з'являться класи процедур, DTO/, Enums/ і sdk_config.yaml.dist. Детально — Команди.
Крок 5: Асинхронні виклики (за потреби)
Якщо сервер публікує асинхронний транспорт, генеруються й класи Async*SDK. Для них потрібен resolver транспорту — див. Використання.