+ $className = $reflection->getName();
+
+ if (!$reflection->hasMethod('getSubscribedEvents')) {
+ $reflection = new \ReflectionClass($reflection->getParentClass());
+ }
+
+ $eventObject = $reflection->newInstanceWithoutConstructor();
+ $reflectionMethod = new \ReflectionMethod(
+ $reflection->getName(),
+ 'getSubscribedEvents'
+ );
+
+ $subscribedEvents = $reflectionMethod->invoke(
+ $eventObject
+ );
+
+ if (!is_array($subscribedEvents[$event])) {
+ $subscribedEvents[$event] = [$subscribedEvents[$event]];
+ }
+
+ $subscribedEventData = [];
+ foreach ($subscribedEvents[$event] as $subscribedEvent) {
+ if (!is_array($subscribedEvent)) {
+ $subscribedEvent = [$subscribedEvent, 0];
+ }
+ if ($subscribedEvent[0] == $value[1]) {
+ $subscribedEventData = [
+ $subscribedEvent[0] => isset($subscribedEvent[1])?$subscribedEvent[1]:0
+ ];
+ }
+ }
+
+ $listeners[] = [
+ 'class' => $className,
+ 'method' => $value[1],
+ 'events' => Yaml::dump($subscribedEventData, 4, 2)
+ ];