/** * @param IKernel $kernel * @param IController $controller * @param string $action * * @return array */ public function injectActionParameters(IKernel $kernel, IController $controller, $action) { $injectedParameters = array(); $neededParameters = array(); $parametersAvailable = array($kernel->getResponse(), $kernel->getRequest(), $kernel->getServer(), $kernel->getEntityManager(), $this); try { $reflectionClass = new \ReflectionClass($controller); $parameters = $reflectionClass->getMethod($action)->getParameters(); } catch (\ReflectionException $e) { $parameters = array(); } foreach ($parameters as $parameter) { if ($parameter->getClass() != NULL) { $neededParameters[] = $parameter->getClass()->getName(); } } foreach ($neededParameters as $type) { foreach ($parametersAvailable as $parameter) { if ($parameter instanceof $type) { $injectedParameters[] = $parameter; } } } return $injectedParameters; }
/** * {@inheritDoc} */ public function returnResponse() { return $this->kernel->getResponse(); }