function handle(Trace $trace) { $controllerName = $trace->getRequiredParameter(self::PARAMETER_CONTROLLER_NAME); $controllerClassName = $this->getControllerClassName($controllerName); if (!class_exists($controllerClassName, true)) { throw new TraceException(sprintf('unknown controller %s', $controllerClassName), $trace); } if (!in_array('IController', class_implements($controllerClassName, true))) { throw new TraceException(sprintf('%s is not a controller due it does not implement IController', $controllerClassName), $trace); } $controllerObject = $this->getControllerInstance($controllerClassName, $trace); $controllerObject->handle($trace); }