@@ -166,6 +166,47 @@ public function testEventSubscriberUnresolvableClassName()
166
166
$ registerListenersPass = new RegisterListenersPass ();
167
167
$ registerListenersPass ->process ($ container );
168
168
}
169
+
170
+ public function testInvokableEventListener ()
171
+ {
172
+ $ container = new ContainerBuilder ();
173
+ $ container ->register ('foo ' , \stdClass::class)->addTag ('kernel.event_listener ' , array ('event ' => 'foo.bar ' ));
174
+ $ container ->register ('bar ' , InvokableListenerService::class)->addTag ('kernel.event_listener ' , array ('event ' => 'foo.bar ' ));
175
+ $ container ->register ('baz ' , InvokableListenerService::class)->addTag ('kernel.event_listener ' , array ('event ' => 'event ' ));
176
+ $ container ->register ('event_dispatcher ' , \stdClass::class);
177
+
178
+ $ registerListenersPass = new RegisterListenersPass ();
179
+ $ registerListenersPass ->process ($ container );
180
+
181
+ $ definition = $ container ->getDefinition ('event_dispatcher ' );
182
+ $ expectedCalls = array (
183
+ array (
184
+ 'addListener ' ,
185
+ array (
186
+ 'foo.bar ' ,
187
+ array (new ServiceClosureArgument (new Reference ('foo ' )), 'onFooBar ' ),
188
+ 0 ,
189
+ ),
190
+ ),
191
+ array (
192
+ 'addListener ' ,
193
+ array (
194
+ 'foo.bar ' ,
195
+ array (new ServiceClosureArgument (new Reference ('bar ' )), '__invoke ' ),
196
+ 0 ,
197
+ ),
198
+ ),
199
+ array (
200
+ 'addListener ' ,
201
+ array (
202
+ 'event ' ,
203
+ array (new ServiceClosureArgument (new Reference ('baz ' )), 'onEvent ' ),
204
+ 0 ,
205
+ ),
206
+ ),
207
+ );
208
+ $ this ->assertEquals ($ expectedCalls , $ definition ->getMethodCalls ());
209
+ }
169
210
}
170
211
171
212
class SubscriberService implements \Symfony \Component \EventDispatcher \EventSubscriberInterface
@@ -177,3 +218,14 @@ public static function getSubscribedEvents()
177
218
);
178
219
}
179
220
}
221
+
222
+ class InvokableListenerService
223
+ {
224
+ public function __invoke ()
225
+ {
226
+ }
227
+
228
+ public function onEvent ()
229
+ {
230
+ }
231
+ }
0 commit comments