ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
Triggerer.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
24
36{
40 private array $triggered_signals = array();
41
47 protected function appendTriggeredSignal(C\Signal $signal, string $event)
48 {
49 $clone = clone $this;
50 if (!isset($clone->triggered_signals[$event])) {
51 $clone->triggered_signals[$event] = array();
52 }
53 $clone->triggered_signals[$event][] = new TriggeredSignal($signal, $event);
54 return $clone;
55 }
56
62 protected function withTriggeredSignal(C\Signal $signal, string $event)
63 {
64 $clone = clone $this;
65 $clone->setTriggeredSignal($signal, $event);
66 return $clone;
67 }
68
75 protected function setTriggeredSignal(C\Signal $signal, string $event): void
76 {
77 $this->triggered_signals[$event] = array();
78 $this->triggered_signals[$event][] = new TriggeredSignal($signal, $event);
79 }
80
84 public function getTriggeredSignals(): array
85 {
86 return $this->flattenArray($this->triggered_signals);
87 }
88
94 public function getTriggeredSignalsFor(string $event): array
95 {
96 if (!isset($this->triggered_signals[$event])) {
97 return [];
98 }
99 return array_map(
100 fn ($ts) => $ts->getSignal(),
101 $this->triggered_signals[$event]
102 );
103 }
104
106 {
107 $clone = clone $this;
108 $clone->triggered_signals = array();
109 return $clone;
110 }
111
115 private function flattenArray(array $array): array
116 {
117 $flatten = array();
118 array_walk_recursive($array, function ($a) use (&$flatten) {
119 $flatten[] = $a;
120 });
121 return $flatten;
122 }
123}
appendTriggeredSignal(C\Signal $signal, string $event)
Append a triggered signal to other signals of the same event.
Definition: Triggerer.php:47
withTriggeredSignal(C\Signal $signal, string $event)
Add a triggered signal, replacing any other signals registered on the same event.
Definition: Triggerer.php:62
getTriggeredSignalsFor(string $event)
Get signals that are triggered for a certain event.
Definition: Triggerer.php:94
flattenArray(array $array)
Flatten a multidimensional array to a single dimension.
Definition: Triggerer.php:115
setTriggeredSignal(C\Signal $signal, string $event)
Add a triggered signal, replacing any other signals registered on the same event.
Definition: Triggerer.php:75
$a
thx to https://mlocati.github.io/php-cs-fixer-configurator for the examples