@@ -43,24 +43,21 @@ public function __construct(ContainerInterface $container)
43
43
* the name of the method that is invoked on listeners.
44
44
* @param EventArgs $eventArgs The event arguments to pass to the event handlers/listeners.
45
45
* If not supplied, the single empty EventArgs instance is used.
46
- *
47
- * @return bool
48
46
*/
49
47
public function dispatchEvent ($ eventName , EventArgs $ eventArgs = null )
50
48
{
51
- if (isset ($ this ->listeners [$ eventName ])) {
52
- $ eventArgs = null === $ eventArgs ? EventArgs::getEmptyInstance () : $ eventArgs ;
49
+ if (!isset ($ this ->listeners [$ eventName ])) {
50
+ return ;
51
+ }
53
52
54
- $ initialized = isset ( $ this -> initialized [ $ eventName ]) ;
53
+ $ eventArgs = null === $ eventArgs ? EventArgs:: getEmptyInstance () : $ eventArgs ;
55
54
56
- foreach ($ this ->listeners [$ eventName ] as $ hash => $ listener ) {
57
- if (!$ initialized && \is_string ($ listener )) {
58
- $ this ->listeners [$ eventName ][$ hash ] = $ listener = $ this ->container ->get ($ listener );
59
- }
55
+ if (!isset ($ this ->initialized [$ eventName ])) {
56
+ $ this ->initializeListeners ($ eventName );
57
+ }
60
58
61
- $ listener ->$ eventName ($ eventArgs );
62
- }
63
- $ this ->initialized [$ eventName ] = true ;
59
+ foreach ($ this ->listeners [$ eventName ] as $ hash => $ listener ) {
60
+ $ listener ->$ eventName ($ eventArgs );
64
61
}
65
62
}
66
63
@@ -73,7 +70,21 @@ public function dispatchEvent($eventName, EventArgs $eventArgs = null)
73
70
*/
74
71
public function getListeners ($ event = null )
75
72
{
76
- return $ event ? $ this ->listeners [$ event ] : $ this ->listeners ;
73
+ if (null !== $ event ) {
74
+ if (!isset ($ this ->initialized [$ event ])) {
75
+ $ this ->initializeListeners ($ event );
76
+ }
77
+
78
+ return $ this ->listeners [$ event ];
79
+ }
80
+
81
+ foreach (array_keys ($ this ->listeners ) as $ event ) {
82
+ if (!isset ($ this ->initialized [$ event ])) {
83
+ $ this ->initializeListeners ($ event );
84
+ }
85
+ }
86
+
87
+ return $ this ->listeners ;
77
88
}
78
89
79
90
/**
@@ -138,4 +149,18 @@ public function removeEventListener($events, $listener)
138
149
}
139
150
}
140
151
}
152
+
153
+ /**
154
+ * @param string $eventName
155
+ */
<
10000
td data-grid-cell-id="diff-d39e0f51c3ab2f7f245b3138dbe75bbad8537dc48d817acf062c7680a733c6bd-140-156-0" data-selected="false" role="gridcell" style="background-color:var(--diffBlob-additionNum-bgColor, var(--diffBlob-addition-bgColor-num));text-align:center" tabindex="-1" valign="top" class="focusable-grid-cell diff-line-number position-relative left-side">
156
+ private function initializeListeners ($ eventName )
157
+ {
158
+ foreach ($ this ->listeners [$ eventName ] as $ hash => $ listener ) {
159
+ if (\is_string ($ listener )) {
160
+ $ this ->listeners [$ eventName ][$ hash ] = $ this ->container ->get ($ listener );
161
+ }
162
+ }
163
+
164
+ $ this ->initialized [$ eventName ] = true ;
165
+ }
141
166
}
0 commit comments