public function getCallbackParameters($callback)
{
if (is_array($callback)) {
list($object, $method) = $callback;
$r = is_object($object) ? new ReflectionObject($object) : new ReflectionClass($object);
return $r->getMethod($method)->getParameters();
} elseif (is_a($callback, 'Closure')) {
$rf = new ReflectionFunction($callback);
return $rf->getParameters();
}
}