Зміни в документі Події життєвого циклу

Остання зміна 2024/07/11 12:22 автором Ashterix

Від версії 3.1
редаговано Ashterix
дата 2024/07/11 12:05
Змінити коментар: Немає коментарів для цієї версії
До версії 4.1
редаговано Ashterix
дата 2024/07/11 12:19
Змінити коментар: Немає коментарів для цієї версії

Підсумок

Подробиці

Властивості сторінки
Назва
... ... @@ -1,1 +1,1 @@
1 -Події життєвого циклу RPC
1 +Події життєвого циклу
Вміст
... ... @@ -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: RpcRequestEvent::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 сервера.