Версія 1.1 додана 2024/07/11 12:00 автором Ashterix

Показати останніх авторів
1 {{box cssClass="floatinginfobox" title="**Зміст**"}}
2 {{toc/}}
3 {{/box}}
4
5 {{info}}
6 Події буди додані в JsonRpcBundle з версії 7.0
7 {{/info}}
8
9 == Події життєвого циклу серверу RPC ==
10
11 Цей документ описує події, які генерує RPC сервер під час свого життєвого циклу. Ви можете підписатися на ці події за допомогою Symfony лістенерів.
12
13 (% id="event_table" %)
14 |= Подія |= Опис |
15 | **rpc.request** | Генерується при отриманні RPC запиту. Використовуйте цю подію для перевірки або модифікації запиту перед його обробкою. |
16 | **rpc.async_request** | Генерується при отриманні асинхронного RPC запиту. Використовуйте її для обробки або модифікації асинхронних запитів перед їх виконанням. |
17 | **rpc.async_output** | Генерується при відправці асинхронної відповіді. Ви можете використовувати її для перевірки або модифікації асинхронних відповідей перед їх відправкою. |
18 | **rpc.pre_execute** | Генерується перед виконанням RPC методу. Використовуйте цю подію для підготовки або модифікації викликів перед їх виконанням. |
19 | **rpc.post_execute** | Генерується після виконання RPC методу. Ви можете використовувати цю подію для обробки результатів або виконання дій після завершення виклику методу. |
20 | **rpc.response** | Генерується перед відправкою RPC відповіді. Використовуйте цю подію для перевірки або модифікації відповідей перед їх відправкою клієнту. |
21 | **rpc.error** | Генерується при виникненні помилки під час обробки RPC запиту. Ви можете використовувати її для обробки помилок або виконання дій у випадку помилки. |
22
23 == Підписка на події за допомогою Symfony лістенерів ==
24
25 Для підписки на ці події, ви можете створити Symfony лістенери. Приклад базового лістенера виглядає наступним чином:
26
27 {{code language="php"}}
28 <?php
29
30 namespace App\EventListener;
31
32 use Symfony\Component\EventDispatcher\Attribute\AsEventListener;
33 use Ufo\JsonRpcBundle\Event\RpcRequestEvent;
34
35 #[AsEventListener(event: RpcRequestEvent::NAME, method: 'onRpcRequest')]
36 class RpcEventListener
37 {
38 public function onRpcRequest(RpcRequestEvent $event): void
39 {
40 // Обробка події
41 }
42 }
43 {{/code}}
44
45 Після створення лістенера, він автоматично зареєструється завдяки атрибутам. Для більш детальної інформації дивіться документацію Symfony щодо подій: [Symfony Event System](https://symfony.com/doc/current/event_dispatcher.html).
46
47 Це дозволить вашому лістенеру підписуватися на події і виконувати відповідні дії під час життєвого циклу RPC сервера.