/** * Starts the application */ public function start() { $page = static::$request->get('path', '/'); $method = static::$request->getMethod(); try { if (!empty($page) && !empty($method)) { $routes = (require Runner::getConfigDir() . "/routes.php"); foreach ($routes as $method_key => $route) { if ($method == $method_key) { foreach ($route as $key => $components) { if ($page == $key) { $model = $components['model']; $controller = $components['controller']; $action = $components['action']; break; } } } } if (isset($model, $controller, $action)) { /** @var BaseModel $routeModel */ $routeModel = new $model(); $routeView = new BaseView($routeModel); /** @var BaseController $routeController */ $routeController = new $controller($routeModel, $routeView); if (method_exists($routeController, $action)) { $routeController->beforeAction(); $routeController->{$action}(); $routeController->afterAction(); } else { HtmlPage::renderError5xx(500, "Bad backend configuration!"); } } else { HtmlPage::renderError4xx(404, "Page not found!"); } } else { HtmlPage::renderError4xx(400, "Bad request!"); } } catch (\Exception $e) { syslog(LOG_ALERT, "[{$e->getCode()}] SVEggGiverApp: Fatal error." . "{$e->getMessage()}. Error trace: {$e->getTraceAsString()}"); HtmlPage::renderError5xx(500, "Server was destroyed!"); } }