public function callAction() { Config::includeFile($this->classFile); $reflectedMethod = new \ReflectionMethod($this->class, $this->method); $arguments = []; if ($this->isFormHandler()) { /** @var \ReflectionParameter $reflectedParam */ foreach ($reflectedMethod->getParameters() as $reflectedParam) { $paramName = $reflectedParam->getName(); $paramValue = null; if (isset($this->arguments[$paramName])) { $paramValue = $this->arguments[$paramName]; } elseif ($this->isUpload() && $this->hasFile($paramName)) { $paramValue = $this->getFile($paramName); } elseif ($reflectedParam->isDefaultValueAvailable()) { $paramValue = $reflectedParam->getDefaultValue(); } $arguments[] = $paramValue; } } else { $arguments = $this->arguments; } $result = null; try { $result = call_user_func_array(array($this->class, $this->method), $arguments); if (is_callable($this->resultTransformer)) { $result = call_user_func($this->resultTransformer, $this, $result); } } catch (\Exception $ex) { if (is_callable($this->resultTransformer)) { $result = call_user_func($this->resultTransformer, $this, $result, $ex); } } return $result; }