Псевдоніми класів

← Псевдоніми класів

Ashterix

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) дозволені, але для незалежних реалізацій краще використовувати різні назви.