/** * Get object of Response. * * @param string $packageRoot * @param Request $request * * @return Response|null */ public function getResponse($packageRoot, Request $request) { $packageRoot = rtrim($packageRoot, '/'); $path = $packageRoot . '/Route/' . $request->route() . '/' . $request->method() . '.php'; if (file_exists($path)) { require $path; $controllerClass = $request->package() . '\\Route_' . str_replace('/', '_', $request->route()) . '\\' . $request->method(); /** * @var BaseController $controller */ $controller = new $controllerClass($packageRoot, $request); /** * Call handler. */ $handler = $_POST['handler'] ?? $_GET['handler'] ?? 'index'; if (preg_match('/[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/', $handler) && method_exists($controllerClass, $handler)) { $controller->{$handler}(); return $controller->getResponse(); } } return null; }