Зміни в документі Події життєвого циклу
Остання зміна 2024/07/11 12:22 автором Ashterix
Підсумок
-
Властивості сторінки (2 змінено, 0 додано, 0 видалено)
Подробиці
- Властивості сторінки
-
- Назва
-
... ... @@ -1,1 +1,1 @@ 1 -Події життєвого циклу RPC1 +Події життєвого циклу - Вміст
-
... ... @@ -3,9 +3,14 @@ 3 3 {{/box}} 4 4 5 5 {{info}} 6 -Події буди додані в JsonRpcBundle з версії 7.0 6 +Події буди додані в JsonRpcBundle з версії 7.0. 7 +Відтепер компоненти життєвого циклу RPC серверу працюють через події і ви маєте можливість на них підписатися, щоб зробити його роботу більш гнучкою. 7 7 {{/info}} 8 8 10 +{{warning}} 11 +Використання подій потребує від вас певних знань і вмінь, певні ваші дії під час підписки на події можуть призвести до неочікуваних результатів, тому ви використовуєте події на свій страх і ризик 12 +{{/warning}} 13 + 9 9 == Перелік подій == 10 10 11 11 RPC сервер під час свого життєвого циклу використовує власні події, що базуються на [[Symfony Event>>https://symfony.com/doc/current/event_dispatcher.html]] ... ... @@ -12,19 +12,51 @@ 12 12 13 13 (% id="event_table" %) 14 14 |= Подія |= Опис | 15 -| **rpc.request** | Генерується при отриманні RPC запиту. Використовуйте цю подію для перевірки або модифікації запиту перед його обробкою. | 16 -| **rpc.pre_execute** | Генерується перед виконанням RPC методу. Використовуйте цю подію для підготовки або модифікації викликів перед їх виконанням. | 17 -| **rpc.post_execute** | Генерується після виконання RPC методу. Ви можете використовувати цю подію для обробки результатів або виконання дій після завершення виклику методу. | 18 -| **rpc.response** | Генерується перед відправкою RPC відповіді. Використовуйте цю подію для перевірки або модифікації відповідей перед їх відправкою клієнту. | 19 -| **rpc.error** | Генерується при виникненні помилки під час обробки RPC запиту. Ви можете використовувати її для обробки помилок або виконання дій у випадку помилки. | 20 -| **rpc.async_request** | Генерується при отриманні асинхронного RPC запиту. Використовуйте її для обробки або модифікації асинхронних запитів перед їх виконанням. | 21 -| **rpc.async_output** | Генерується при відправці асинхронної відповіді. Ви можете використовувати її для перевірки або модифікації асинхронних відповідей перед їх відправкою. | 20 +|((( 21 + **rpc.request** 22 22 23 +{{{class RpcRequestEvent}}} 24 +)))|((( 25 +Відбувається при отриманні RPC запиту. Використовуйте цю подію для перевірки або модифікації запиту перед його обробкою. 26 +)))| 27 +|((( 28 + **rpc.pre_execute** 29 + 30 +{{{class RpcPreExecuteEvent}}} 31 +)))|((( 32 +Відбувається перед виконанням RPC методу. Використовуйте цю подію для підготовки або модифікації викликів перед їх виконанням. 33 +)))| 34 +|((( 35 + **rpc.post_execute** 36 + 37 +{{{class RpcPostExecuteEvent}}} 38 +)))|Відбувається після виконання RPC методу. Ви можете використовувати цю подію для обробки результатів або виконання дій після завершення виклику методу. | 39 +|((( 40 + **rpc.response** 41 + 42 +{{{class RpcResponseEvent}}} 43 +)))|Відбувається перед відправкою RPC відповіді. Використовуйте цю подію для перевірки або модифікації відповідей перед їх відправкою клієнту. | 44 +|((( 45 + **rpc.error** 46 + 47 +{{{class RpcErrorEvent}}} 48 +)))|Відбувається при виникненні помилки під час обробки RPC запиту. Ви можете використовувати її для обробки помилок або виконання дій у випадку помилки. | 49 +|((( 50 + **rpc.async_request** 51 + 52 +{{{class RpcAsyncRequestEvent}}} 53 +)))|Відбувається при отриманні асинхронного RPC запиту. Використовуйте її для обробки або модифікації асинхронних запитів перед їх виконанням. | 54 +|((( 55 + **rpc.async_output** 56 + 57 +{{{class RpcAsyncOutputEvent}}} 58 +)))|Відбувається при відправці асинхронної відповіді. Ви можете використовувати її для перевірки або модифікації асинхронних відповідей перед їх відправкою. | 59 + 23 23 == Підписка на події за допомогою Symfony лістенерів == 24 24 25 25 Для підписки на ці події, ви можете створити Symfony лістенери. Приклад базового лістенера виглядає наступним чином: 26 26 27 -{{code language="php"}} 64 +{{code language="php" layout="LINENUMBERS" title="Приклад власного підписника на події"}} 28 28 <?php 29 29 30 30 namespace App\EventListener; ... ... @@ -31,17 +31,18 @@ 31 31 32 32 use Symfony\Component\EventDispatcher\Attribute\AsEventListener; 33 33 use Ufo\JsonRpcBundle\Event\RpcRequestEvent; 71 +use Ufo\JsonRpcBundle\Event\RpcEvent; 34 34 35 -#[AsEventListener(event: Rpc RequestEvent::NAME, method: 'onRpcRequest')]73 +#[AsEventListener(event: RpcEvent::REQUEST, method: 'onRpcRequest')] 36 36 class RpcEventListener 37 37 { 38 38 public function onRpcRequest(RpcRequestEvent $event): void 39 39 { 40 - // Обробкаподії78 + // your own event handler 41 41 } 42 42 } 43 43 {{/code}} 44 44 45 -Після створення лістенера, він автоматично зареєструється завдяки атрибутам. Для більш детальної інформації дивіться документацію Symfony щодо подій: [Symfony Event System ](https://symfony.com/doc/current/event_dispatcher.html).83 +Після створення лістенера, він автоматично зареєструється завдяки атрибутам. Для більш детальної інформації дивіться документацію Symfony щодо подій: [[Symfony Event System>>https://symfony.com/doc/current/event_dispatcher.html]] 46 46 47 47 Це дозволить вашому лістенеру підписуватися на події і виконувати відповідні дії під час життєвого циклу RPC сервера.