Вікі-код для #[RPC\Info]

Версія 1.5 додана 2024/05/10 12:08 автором Ashterix

Сховати останніх авторів
Ashterix 1.2 1 {{box cssClass="floatinginfobox" width="400px"}}
Ashterix 1.5 2 == (% style="display:block; margin-top:-30px; text-align:center" %)Summary(%%) ==
Ashterix 1.4 3
Ashterix 1.2 4 (% style="margin-right:auto" %)
Ashterix 1.3 5 |(% style="width:141px" %)**Classname**|(% colspan="2" rowspan="1" style="width:79px" %)Info
6 |(% style="width:141px" %)**Namespace**|(% colspan="2" style="width:79px" %)(((
7 Ufo\RpcObject\RPC
8 )))
Ashterix 1.2 9 |(% style="width:141px" %)(((
Ashterix 1.3 10 **Target**
Ashterix 1.2 11 )))|(% colspan="2" rowspan="1" style="width:79px" %)class
Ashterix 1.3 12 |(% colspan="3" style="width:141px" %)**Arguments:**
Ashterix 1.2 13 |(% colspan="1" rowspan="3" style="width:141px" %)(((
14 **$alias**
15 )))|(% style="width:79px" %)**type**|(% style="width:153px" %)string
16 |(% style="width:79px" %)**optional**|(% style="width:153px" %)true
17 |(% style="width:79px" %)**default**|(% style="width:153px" %)null
18 |(% colspan="1" rowspan="3" style="width:141px" %)(((
19 **$concat**
20 )))|(% style="width:79px" %)**type**|(% style="width:153px" %)string
21 |(% style="width:79px" %)**optional**|(% style="width:153px" %)true
22 |(% style="width:79px" %)**default**|(% style="width:153px" %)'.'
23 {{/box}}
24
Ashterix 1.5 25 = Псевдоніми класів =
26
Ashterix 1.3 27 Інколи може знадобитися задати альтернативну назву для API метода, наприклад якщо у вас занадто довга назва класу, що обумовлена якимись стандатрами або домовленностями до іменувань класів в вашому проєкті.
Ashterix 1.2 28
Ashterix 1.3 29 В такому разі ви можете додати до вашого класу атрибут{{code language="none"}}#[RPC\Info]{{/code}} вказавши псевдонім для класу, це дасть вказівку RPC серверу сприймати цей псевдонім асоційовано до цього класу.
Ashterix 1.2 30
31 {{code language="php" layout="LINENUMBERS"}}
32 <?php
33 namespace App\Api\Procedures;
34
35 use Ufo\RpcObject\RPC;
36
Ashterix 1.3 37 #[RPC\Info(alias: 'users')]
Ashterix 1.2 38 class MySpecificApiUserServiceWithLongClassName implements IRpcService
39 {
Ashterix 1.3 40 public function getList(): void {}
Ashterix 1.2 41 }
42 {{/code}}
Ashterix 1.3 43
44 В такому випадку буде доступний API метод {{code language="none"}}users.getList{{/code}}.
45
46 {{warning}}
47 Зауважте, що оригінальний неймінг метод буде видалений із ServiceMap і більше не буде доступним.
48
49 Тобто MySpecificApiUserServiceWithLongClassName.getList більше не буде працювати!
50 {{/warning}}
51
Ashterix 1.5 52 = Символ конкатенації =
53
54 Атрибут Info також приймає другий аргумент {{code language="none"}}concat{{/code}}, який вказує символ або символи, що поєднують назву класу і назву методу при генерації ServiceMap для RPC серверу.
55
56 Значення за замовченням "." (крапка), але ви можете це легко змінити, вказавши потрібний вам символ або символи.
57
58 {{code language="php" layout="LINENUMBERS"}}
59 <?php
60 namespace App\Api\Procedures;
61
62 use Ufo\RpcObject\RPC;
63
64 #[RPC\Info(alias: 'users', concat: '>')]
65 class MySpecificApiUserServiceWithLongClassName implements IRpcService
66 {
67 public function getList(): void {}
68 }
69 {{/code}}
70
71 Приклад коду вище призведе до того, що в API буде доступний метод {{code language="none"}}users>getList{{/code}}.
72
73 = Застереження =
74
75 ЗАУВАЖТЕ, що ніякої додаткової валідації щодо використаних псевдонімів або символів конкатенації не існує, тож ваші дії можуть призвести до підміни псевдонімом іншого існуючого класу.
76
77 Наприклад в вашому додатку вже є клас {{code language="none"}}Foo{{/code}} з методом {{code language="none"}}bar{{/code}}, який доданий в API як метод {{code language="none"}}Foo.bar{{/code}}, ви створюєте клас {{code language="none"}}Baz{{/code}} (% id="cke_bm_372757S" style="display:none" %) (%%)з методом {{code language="none"}}bar{{/code}}(% id="cke_bm_372757E" style="display:none" %) (%%) і задаєте йому псевдонім {{code language="none"}}Foo{{/code}}, що призведе до
78
79 реєстрації двох API сервісів з однаковою назвою. Результат цих дій непередбачуваний.
80
81 {{error}}
82 Використовуючи цей механізм, ви дієте на свій страх і ризик!
83 {{/error}}
84
Ashterix 1.3 85