1 | <?php |
||
25 | final class EventDispatcher implements SlickEventDispatcher, EventGenerator |
||
26 | { |
||
27 | |||
28 | use EventGeneratorMethods; |
||
29 | |||
30 | /** |
||
31 | * @var bool |
||
32 | */ |
||
33 | private static $dispatching = false; |
||
34 | |||
35 | /** |
||
36 | * @var array |
||
37 | */ |
||
38 | private $listeners = []; |
||
39 | |||
40 | /** |
||
41 | * Dispatches events form an event generator |
||
42 | * |
||
43 | * @param EventGenerator $generator |
||
44 | * @return Event[] the list of dispatched events |
||
45 | */ |
||
46 | public function dispatchEventsFrom(EventGenerator $generator): array |
||
54 | |||
55 | /** |
||
56 | * Adds an event listener |
||
57 | * |
||
58 | * @param string $event |
||
59 | * @param EventListener|Callable|ListenerProviderInterface $listener |
||
60 | * @param int $priority |
||
61 | */ |
||
62 | public function addListener(string $event, $listener, int $priority = SlickEventDispatcher::P_NORMAL): void |
||
69 | |||
70 | /** |
||
71 | * Provide all relevant listeners with an event to process. |
||
72 | * |
||
73 | * @param object $event |
||
74 | * The object to process. |
||
75 | * |
||
76 | * @return object |
||
77 | * The Event that was passed, now modified by listeners. |
||
78 | */ |
||
79 | public function dispatch(object $event) |
||
99 | |||
100 | /** |
||
101 | * Prioritized list of listeners for provided event |
||
102 | * |
||
103 | * @param object $event |
||
104 | * @return array |
||
105 | */ |
||
106 | private function listenersFor(object $event): array |
||
124 | |||
125 | /** |
||
126 | * Invoke listener |
||
127 | * |
||
128 | * @param $listener |
||
129 | * @param Object $event |
||
130 | * @return Object |
||
131 | */ |
||
132 | private function invokeListener($listener, Object $event) |
||
144 | |||
145 | /** |
||
146 | * Matches the listener register pattern with event |
||
147 | * |
||
148 | * @param $pattern |
||
149 | * @param object $event |
||
150 | * @return bool |
||
151 | */ |
||
152 | private function match($pattern, object $event): bool |
||
159 | |||
160 | /** |
||
161 | * Filters the matched listeners |
||
162 | * |
||
163 | * @param object $event |
||
164 | * @return array |
||
165 | */ |
||
166 | private function matchedListeners(object $event): array |
||
180 | |||
181 | /** |
||
182 | * orderedListeners |
||
183 | * |
||
184 | * @param array $unordered |
||
185 | * @return array |
||
186 | */ |
||
187 | private function orderedListeners(array $unordered): array |
||
202 | } |
||
203 |