docs: rewrite JsonRpcBundle docs, add SDK docs, move them under docs/api
uk/docs/api/json-rpc-bundle/add_rpc_service/info.md
новий файл +75
−0
1
+
## Summary
2
+
3
+
| | |
4
+
| --- | --- |
5
+
| **Classname** | `Info` |
6
+
| **Namespace** | `Ufo\RpcObject\RPC` |
7
+
| **Target** | class |
8
+
9
+
```php
10
+
public function __construct(
11
+
public string $alias,
12
+
public string $concat = '.',
13
+
?int $version = 1,
14
+
array $removedMethods = [],
15
+
)
16
+
```
17
+
18
+
# Псевдоніми класів
19
+
20
+
Інколи потрібна альтернативна назва для методів API — наприклад, якщо назва класу задовга через домовленості щодо іменування в проєкті. Атрибут `#[RPC\Info]` задає псевдонім, під яким методи класу будуть доступні в API.
21
+
22
+
```php
23
+
<?php
24
+
25
+
namespace App\Api\Procedures;
26
+
27
+
use Ufo\JsonRpcBundle\ApiMethod\Interfaces\IRpcService;
28
+
use Ufo\RpcObject\RPC;
29
+
30
+
#[RPC\Info('users')]
31
+
class MySpecificApiUserServiceWithLongClassName implements IRpcService
32
+
{
33
+
public function getList(): array { return []; }
34
+
}
35
+
```
36
+
37
+
В API буде доступний метод `users.getList`. Оригінальна назва (`MySpecificApiUserServiceWithLongClassName.getList`) більше не працює.
38
+
39
+
Псевдонім також стає тегом методів у [документації](/docs/api/json-rpc-bundle/documentation), а повна назва класу — описом тегу.
40
+
41
+
# Символ конкатенації
42
+
43
+
Другий аргумент `concat` задає символ (або символи) між псевдонімом і назвою методу. За замовчуванням — `.` (крапка).
44
+
45
+
```php
46
+
#[RPC\Info('users', concat: '_')]
47
+
class UserApi implements IRpcService
48
+
{
49
+
public function getList(): array { return []; }
50
+
}
51
+
```
52
+
53
+
В API буде доступний метод `users_getList`.
54
+
55
+
:::warning subtitle="Версії 10.0.0–10.3.0"
56
+
У цих версіях `concat` ігнорувався, і методи завжди мали роздільник `.`. З 10.3.1 він знову застосовується: якщо у вас задано `concat`, а клієнти викликають методи через `.`, після оновлення назви методів зміняться — оновіть клієнтів або приберіть `concat`.
57
+
:::
58
+
59
+
# Версія API та видалені методи
60
+
61
+
Аргументи `version` і `removedMethods` описують, до якої версії API належить клас і які методи попередніх версій у ній прибрано:
62
+
63
+
```php
64
+
#[RPC\Info('user', version: 2, removedMethods: ['legacySearch'])]
65
+
class UserApiV2 implements IRpcService
66
+
{
67
+
public function get(string $uuid): array { /* ... */ }
68
+
}
69
+
```
70
+
71
+
Детально — в розділі [Версії API](/docs/api/json-rpc-bundle/functionality/versions).
72
+
73
+
# Застереження
74
+
75
+
Дві реалізації з однаковою назвою методу в межах однієї групи й версії API бандл відхиляє (з урахуванням правил успадкування класів). Однакові назви в різних [групах API](/docs/api/json-rpc-bundle/functionality/groups) дозволені, але для незалежних реалізацій краще використовувати різні назви.