1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
dependenteventsubscribertrait.php
См. документацию.
1<?php
2
3namespace Bitrix\Calendar\Internals\EventManager\EventSubscriber;
4
5use Bitrix\Main\Event;
6use Bitrix\Main\EventResult;
7
9{
10 use EventSubscriberResponseTrait;
11
12 abstract static function getDependencies(): array;
13
14 abstract public function handle(Event $event): EventResult;
15
16 public function __invoke(Event $event): EventResult
17 {
18 if (is_a(static::class, DependentEventSubscriberInterface::class, true))
19 {
20 $this->checkDependencies($event, static::getDependencies());
21 }
22
23 return $this->handle($event);
24 }
25
26 protected function getResultFromSubscriber(Event $event, string $subscriberClass): mixed
27 {
28 foreach ($event->getResults() as $subscriberResult)
29 {
30 if (
31 $subscriberResult->getHandler() !== $subscriberClass
32 || (int)$subscriberResult->getType() !== EventResult::SUCCESS
33 )
34 {
35 continue;
36 }
37
38 return $subscriberResult->getParameters();
39 }
40
41 return null;
42 }
43
44 private function checkDependencies(Event $event, array $dependencies): void
45 {
46 $executedSubscribers = array_map(
47 fn (EventResult $eventResult) => $eventResult->getHandler(),
48 $event->getResults()
49 );
50
51 if (!empty(array_diff($dependencies, $executedSubscribers)))
52 {
53 throw new \RuntimeException('Dependencies not executed');
54 }
55 }
56}
Определения event.php:5
getHandler()
Определения eventresult.php:39
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
getResultFromSubscriber(Event $event, string $subscriberClass)
$event
Определения prolog_after.php:141