public function bindDataToControllerMethod($paramsFromGET, $controllerName, $controllerMethod) { $input = InputData::getInstance(); $input->setGet($paramsFromGET); $input->setPost($this->request->getPOST()); $class = new \ReflectionClass($controllerName); $method = $class->getMethod($controllerMethod); $methodRequiredParams = $method->getNumberOfRequiredParameters(); $methodParams = $method->getParameters(); $requestInput = array(); foreach ($methodParams as $par) { if ($par->getClass()->name !== null) { $paramClass = new \ReflectionClass($par->getClass()->name); $paramClassProperties = $paramClass->getProperties(); $paramClassInstance = new $paramClass->name(); foreach ($paramClassProperties as $property) { foreach (array_merge($input->getPost(), $input->getGet(), $_GET, $_FILES) as $key => $value) { $propertyName = $property->name; if ($property->name == $key) { $paramClassInstance->{$propertyName} = $value; } } } $requestInput[$par->name] = $paramClassInstance; } if (isset($input->getGet()[$par->name])) { $requestInput[$par->name] = $input->getGet()[$par->name]; } else { if (isset($input->getPost()[$par->name])) { $requestInput[$par->name] = $input->getPost()[$par->name]; } } } if ($methodRequiredParams > count($requestInput)) { throw new \Exception('parameters in the request not equal to parameters declared in method', 500); } return $requestInput; }
public static function back() { header('Location: ' . $_SERVER['HTTP_REFERER']); Session::setOldInput(InputData::getInstance()->getPost()); exit; }