Skip to content

Commit

Permalink
added event priorities in the profiler
Browse files Browse the repository at this point in the history
  • Loading branch information
fabpot committed Nov 17, 2011
1 parent be193cc commit 62fb019
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 12 deletions.
Expand Up @@ -30,6 +30,7 @@ class TraceableEventDispatcher extends ContainerAwareEventDispatcher implements
private $logger;
private $called;
private $stopwatch;
private $priorities;

/**
* Constructor.
Expand Down Expand Up @@ -84,19 +85,11 @@ public function dispatch($eventName, Event $event = null)
public function addListener($eventName, $listener, $priority = 0)
{
if (!is_callable($listener)) {
if (is_string($listener)) {
$typeDefinition = '[string] '.$listener;
} elseif (is_array($listener)) {
$typeDefinition = '[array] '.(is_object($listener[0]) ? get_class($listener[0]) : $listener[0]).'::'.$listener[1];
} elseif (is_object($listener)) {
$typeDefinition = '[object] '.get_class($listener);
} else {
$typeDefinition = '[?] '.var_export($listener, true);
}

throw new \RuntimeException(sprintf('The given callback (%s) for event "%s" is not callable.', $typeDefinition, $eventName));
throw new \RuntimeException(sprintf('The given callback (%s) for event "%s" is not callable.', $this->getListenerAsString($listener), $eventName));
}

$this->priorities[$eventName.'_'.$this->getListenerAsString($listener)] = $priority;

parent::addListener($eventName, $listener, $priority);
}

Expand Down Expand Up @@ -203,7 +196,10 @@ public function getNotCalledListeners()
*/
private function getListenerInfo($listener, $eventName)
{
$info = array('event' => $eventName);
$info = array(
'event' => $eventName,
'priority' => $this->priorities[$eventName.'_'.$this->getListenerAsString($listener)],
);
if ($listener instanceof \Closure) {
$info += array(
'type' => 'Closure',
Expand Down Expand Up @@ -271,4 +267,17 @@ private function updateProfile($token)
$profiler->saveProfile($child);
}
}

private function getListenerAsString($listener)
{
if (is_string($listener)) {
return '[string] '.$listener;
} elseif (is_array($listener)) {
return '[array] '.(is_object($listener[0]) ? get_class($listener[0]) : $listener[0]).'::'.$listener[1];
} elseif (is_object($listener)) {
return '[object] '.get_class($listener);
}

return '[?] '.var_export($listener, true);
}
}
Expand Up @@ -15,11 +15,13 @@
<table>
<tr>
<th>Event name</th>
<th>Priority</th>
<th>Listener</th>
</tr>
{% for listener in collector.calledlisteners %}
<tr>
<td><code>{{ listener.event }}</code></td>
<td><code>{{ listener.priority }}</code></td>
<td><code>{{ display_listener(listener) }}</code></td>
</tr>
{% endfor %}
Expand All @@ -31,12 +33,14 @@
<table>
<tr>
<th>Event name</th>
<th>Priority</th>
<th>Listener</th>
</tr>
{% set listeners = collector.notcalledlisteners %}
{% for listener in listeners|keys|sort %}
<tr>
<td><code>{{ listeners[listener].event }}</code></td>
<td><code>{{ listeners[listener].priority }}</code></td>
<td><code>{{ display_listener(listeners[listener]) }}</code></td>
</tr>
{% endfor %}
Expand Down

0 comments on commit 62fb019

Please sign in to comment.