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));
}
parent::addListener($eventName, $listener, $priority);
}