public function run() { $reflectionClass = new \ReflectionClass($this); if ($reflectionClass->hasMethod($method = 'action' . StringUtils::camelize($this->request->getAction()))) { $parameterList = $this->request->getParameterList(); $methodReflection = $reflectionClass->getMethod($method); $argumentList = []; foreach ($methodReflection->getParameters() as $parameterRefleciton) { if (!isset($parameterList[$parameterRefleciton->getName()])) { if ($parameterRefleciton->isOptional()) { continue; } throw new \Exception('not implemented yet: define invalid request exception'); } $argumentList[] = $parameterList[$parameterRefleciton->getName()]; } $methodReflection->invokeArgs($this, $argumentList); } }
/** * $request is target application request which will be matched * * @param IRequest $request * * @return null|string */ public function build(IRequest $request) { return sprintf('%s/%s/%s/%s', $request->getHttpRequest()->getUrl()->getAuthority(), implode(':', $request->getModulePath()), $request->getPresenter(), $request->getAction()); }