- /**
- * Returns information about the listener.
- *
- * @param object $listener The listener
- * @param string $eventName The event name
- *
- * @return array Information about the listener
- */
- private function getListenerInfo($listener, $eventName)
- {
- $info = array(
- 'event' => $eventName,
- 'priority' => $this->getListenerPriority($eventName, $listener),
- );
-
- // unwrap for correct listener info
- if ($listener instanceof WrappedListener) {
- $listener = $listener->getWrappedListener();
- }
-
- if ($listener instanceof \Closure) {
- $info += array(
- 'type' => 'Closure',
- 'pretty' => 'closure',
- );
- } elseif (is_string($listener)) {
- try {
- $r = new \ReflectionFunction($listener);
- $file = $r->getFileName();
- $line = $r->getStartLine();
- } catch (\ReflectionException $e) {
- $file = null;
- $line = null;
- }
- $info += array(
- 'type' => 'Function',
- 'function' => $listener,
- 'file' => $file,
- 'line' => $line,
- 'pretty' => $listener,
- );
- } elseif (is_array($listener) || (is_object($listener) && is_callable($listener))) {
- if (!is_array($listener)) {
- $listener = array($listener, '__invoke');
- }
- $class = is_object($listener[0]) ? get_class($listener[0]) : $listener[0];
- try {
- $r = new \ReflectionMethod($class, $listener[1]);
- $file = $r->getFileName();
- $line = $r->getStartLine();
- } catch (\ReflectionException $e) {
- $file = null;
- $line = null;
- }
- $info += array(
- 'type' => 'Method',
- 'class' => $class,
- 'method' => $listener[1],
- 'file' => $file,
- 'line' => $line,
- 'pretty' => $class.'::'.$listener[1],
- );
- }
-
- return $info;
- }
-