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;
 }