コード例 #1
0
ファイル: Runner.php プロジェクト: spasquier/sv-egg-giver
 /**
  * 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!");
     }
 }