Зміни в документі #[RPC\Info]
Остання зміна 2024/05/19 21:26 автором Ashterix
Підсумок
-
Властивості сторінки (1 змінено, 0 додано, 0 видалено)
Подробиці
- Властивості сторінки
-
- Вміст
-
... ... @@ -1,87 +1,0 @@ 1 -{{box cssClass="floatinginfobox"}} 2 -== (% style="display:block; margin-top:-30px; text-align:center" %)Summary(%%) == 3 - 4 -(% style="margin-right:auto" %) 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 -))) 9 -|(% style="width:141px" %)((( 10 -**Target** 11 -)))|(% colspan="2" rowspan="1" style="width:79px" %)class 12 -|(% colspan="3" style="width:141px" %)**Arguments:** 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 - 25 -= Псевдоніми класів = 26 - 27 -Інколи може знадобитися задати альтернативну назву для API метода, наприклад якщо у вас занадто довга назва класу, що обумовлена якимись стандатрами або домовленностями до іменувань класів в вашому проєкті. 28 - 29 -В такому разі ви можете додати до вашого класу атрибут{{code language="none"}}#[RPC\Info]{{/code}} вказавши псевдонім для класу, це дасть вказівку RPC серверу сприймати цей псевдонім асоційовано до цього класу. 30 - 31 -{{code language="php" layout="LINENUMBERS"}} 32 -<?php 33 -namespace App\Api\Procedures; 34 - 35 -use Ufo\RpcObject\RPC; 36 - 37 -#[RPC\Info(alias: 'users')] 38 -class MySpecificApiUserServiceWithLongClassName implements IRpcService 39 -{ 40 - public function getList(): void {} 41 -} 42 -{{/code}} 43 - 44 -В такому випадку буде доступний API метод {{code language="none"}}users.getList{{/code}}. 45 - 46 -{{warning}} 47 -Зауважте, що оригінальний неймінг метод буде видалений із ServiceMap і більше не буде доступним. 48 - 49 -Тобто //**MySpecificApiUserServiceWithLongClassName.getList**// більше не буде працювати! 50 -{{/warning}} 51 - 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 - 85 -= В майбутньому = 86 - 87 -В подальших планах реалізувати можливість задавати псевдоніми кожному конкретному API методу, а не тільки класам.