@@ -10,7 +10,7 @@ class EventCollector extends TimeDataCollector
10
10
/** @var Dispatcher */
11
11
protected $ events ;
12
12
13
- /** @var ValueExporter */
13
+ /** @var ValueExporter */
14
14
protected $ exporter ;
15
15
16
16
public function __construct ($ requestStartTime = null )
@@ -25,9 +25,13 @@ public function onWildcardEvent()
25
25
$ name = $ this ->events ->firing ();
26
26
$ time = microtime (true );
27
27
28
+ // Get the arguments passed to the event
28
29
$ params = $ this ->prepareParams (func_get_args ());
29
30
30
- foreach ($ this ->events ->getListeners ($ name ) as $ i => $ listener ) {
31
+ // Find all listeners for the current event
32
+ foreach ($ this ->events ->getListeners ($ name ) as $ i => $ listener ) {
33
+
34
+ // Check if it's an object + method name
31
35
if (is_array ($ listener ) && count ($ listener ) > 1 && is_object ($ listener [0 ])) {
32
36
list ($ class , $ method ) = $ listener ;
33
37
@@ -36,25 +40,29 @@ public function onWildcardEvent()
36
40
continue ;
37
41
}
38
42
39
- // Format thet listener to readable format
43
+ // Format the listener to readable format
40
44
$ listener = get_class ($ class ) . '@ ' . $ method ;
41
-
45
+
46
+ // Handle closures
42
47
} elseif ($ listener instanceof \Closure) {
43
48
$ reflector = new \ReflectionFunction ($ listener );
44
49
45
- if ($ reflector ->getNamespaceName () == 'Barryvdh\Debugbar ' ) {
50
+ // Skip our own listeners
51
+ if ($ reflector ->getNamespaceName () == 'Barryvdh\Debugbar ' ) {
46
52
continue ;
47
53
}
48
54
55
+ // Format the closure to a readable format
49
56
$ filename = ltrim (str_replace (base_path (), '' , $ reflector ->getFileName ()), '/ ' );
50
- $ listener = $ reflector ->getName () . ' ( ' . $ filename . ': ' . $ reflector ->getStartLine () . '- ' . $ reflector ->getEndLine () . ') ' ;
57
+ $ listener = $ reflector ->getName () . ' ( ' . $ filename . ': ' . $ reflector ->getStartLine () . '- ' . $ reflector ->getEndLine () . ') ' ;
51
58
} else {
59
+ // Not sure if this is possible, but to prevent edge cases
52
60
$ listener = $ this ->formatVar ($ listener );
53
61
}
54
62
55
- $ params ['listeners. ' . $ i ] = $ listener ;
63
+ $ params ['listeners. ' . $ i ] = $ listener ;
56
64
}
57
- $ this ->addMeasure ($ name , $ time , $ time , $ params );
65
+ $ this ->addMeasure ($ name , $ time , $ time , $ params );
58
66
}
59
67
60
68
public function subscribe (Dispatcher $ events )
@@ -69,13 +77,15 @@ protected function prepareParams($params)
69
77
foreach ($ params as $ key => $ value ) {
70
78
$ data [$ key ] = htmlentities ($ this ->exporter ->exportValue ($ value ), ENT_QUOTES , 'UTF-8 ' , false );
71
79
}
80
+
72
81
return $ data ;
73
82
}
74
83
75
84
public function collect ()
76
85
{
77
86
$ data = parent ::collect ();
78
87
$ data ['nb_measures ' ] = count ($ data ['measures ' ]);
88
+
79
89
return $ data ;
80
90
}
81
91
@@ -87,16 +97,16 @@ public function getName()
87
97
public function getWidgets ()
88
98
{
89
99
return array (
90
- "events " => array (
91
- "icon " => "tasks " ,
92
- "widget " => "PhpDebugBar.Widgets.TimelineWidget " ,
93
- "map " => "event " ,
94
- "default " => "{} "
95
- ),
96
- 'events:badge ' => array (
97
- 'map ' => 'event.nb_measures ' ,
98
- 'default ' => 0
99
- )
100
+ "events " => array (
101
+ "icon " => "tasks " ,
102
+ "widget " => "PhpDebugBar.Widgets.TimelineWidget " ,
103
+ "map " => "event " ,
104
+ "default " => "{} " ,
105
+ ),
106
+ 'events:badge ' => array (
107
+ 'map ' => 'event.nb_measures ' ,
108
+ 'default ' => 0 ,
109
+ ),
100
110
);
101
111
}
102
112
}
0 commit comments