Summary
| Classname | Info |
| Namespace | Ufo\RpcObject\RPC |
| Target | class |
public function __construct(
public string $alias,
public string $concat = '.',
?int $version = 1,
array $removedMethods = [],
)
Псевдоніми класів
Інколи потрібна альтернативна назва для методів API — наприклад, якщо назва класу задовга через домовленості щодо іменування в проєкті. Атрибут #[RPC\Info] задає псевдонім, під яким методи класу будуть доступні в API.
<?php
namespace App\Api\Procedures;
use Ufo\JsonRpcBundle\ApiMethod\Interfaces\IRpcService;
use Ufo\RpcObject\RPC;
#[RPC\Info('users')]
class MySpecificApiUserServiceWithLongClassName implements IRpcService
{
public function getList(): array { return []; }
}
В API буде доступний метод users.getList. Оригінальна назва (MySpecificApiUserServiceWithLongClassName.getList) більше не працює.
Псевдонім також стає тегом методів у документації, а повна назва класу — описом тегу.
Символ конкатенації
Другий аргумент concat задає символ (або символи) між псевдонімом і назвою методу. За замовчуванням — . (крапка).
#[RPC\Info('users', concat: '_')]
class UserApi implements IRpcService
{
public function getList(): array { return []; }
}
В API буде доступний метод users_getList.
У цих версіях concat ігнорувався, і методи завжди мали роздільник .. З 10.3.1 він знову застосовується: якщо у вас задано concat, а клієнти викликають методи через ., після оновлення назви методів зміняться — оновіть клієнтів або приберіть concat.
Версія API та видалені методи
Аргументи version і removedMethods описують, до якої версії API належить клас і які методи попередніх версій у ній прибрано:
#[RPC\Info('user', version: 2, removedMethods: ['legacySearch'])]
class UserApiV2 implements IRpcService
{
public function get(string $uuid): array { /* ... */ }
}
Детально — в розділі Версії API.
Застереження
Дві реалізації з однаковою назвою методу в межах однієї групи й версії API бандл відхиляє (з урахуванням правил успадкування класів). Однакові назви в різних групах API дозволені, але для незалежних реалізацій краще використовувати різні назви.