Зміни в документі #[RPC\Info]
Остання зміна 2024/05/19 21:26 автором Ashterix
Підсумок
-
Властивості сторінки (1 змінено, 0 додано, 0 видалено)
Подробиці
- Властивості сторінки
-
- Вміст
-
... ... @@ -1,5 +1,5 @@ 1 1 {{box cssClass="floatinginfobox" width="400px"}} 2 -== (% style="text-align:center" %)Summary(%%) == 2 +== (% style="display:block; margin-top:-30px; text-align:center" %)Summary(%%) == 3 3 4 4 (% style="margin-right:auto" %) 5 5 |(% style="width:141px" %)**Classname**|(% colspan="2" rowspan="1" style="width:79px" %)Info ... ... @@ -20,10 +20,10 @@ 20 20 )))|(% style="width:79px" %)**type**|(% style="width:153px" %)string 21 21 |(% style="width:79px" %)**optional**|(% style="width:153px" %)true 22 22 |(% style="width:79px" %)**default**|(% style="width:153px" %)'.' 23 - 24 - 25 25 {{/box}} 26 26 25 += Псевдоніми класів = 26 + 27 27 Інколи може знадобитися задати альтернативну назву для API метода, наприклад якщо у вас занадто довга назва класу, що обумовлена якимись стандатрами або домовленностями до іменувань класів в вашому проєкті. 28 28 29 29 В такому разі ви можете додати до вашого класу атрибут{{code language="none"}}#[RPC\Info]{{/code}} вказавши псевдонім для класу, це дасть вказівку RPC серверу сприймати цей псевдонім асоційовано до цього класу. ... ... @@ -49,4 +49,37 @@ 49 49 Тобто MySpecificApiUserServiceWithLongClassName.getList більше не буде працювати! 50 50 {{/warning}} 51 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 + 52 52