Example #1
0
 static function start()
 {
     $params = [];
     $baseController = new Controller();
     //контроллер и действие по умолчанию
     $controllerName = 'Main';
     $actionName = 'Index';
     $routes = explode('/', $_SERVER['REQUEST_URI']);
     //получаем имя контроллера
     if (!empty($routes[2])) {
         $controllerName = ucfirst($routes[2]);
     }
     //получаем имя экшена
     if (!empty($routes[3])) {
         $actionName = ucfirst($routes[3]);
     }
     if (!empty($routes[4])) {
         for ($i = 4; $i <= count($routes); $i++) {
             array_push($params, $routes[$i]);
         }
     }
     //добавляем префиксы
     $modelName = $controllerName;
     $controllerName = $controllerName . 'Controller';
     $actionName = 'action' . $actionName;
     //подгружаем файл с классом модели
     $modelFile = $modelName . '.php';
     $modelPath = "application/models/" . $modelFile;
     if (file_exists($modelPath)) {
         include $modelPath;
     }
     //подгружаем файл с классом контроллера
     $controllerFile = $controllerName . '.php';
     $controllerPath = 'application/controllers/' . $controllerFile;
     if (file_exists($controllerPath)) {
         include $controllerPath;
         //создаем контроллер
         $controller = new $controllerName();
         $action = $actionName;
         if (method_exists($controller, $action)) {
             //вызываем действие контроллера
             call_user_func_array(array($controller, $action), $params);
             //$controller->$action();
         } else {
             $baseController->action404();
         }
     } else {
         $baseController->action404();
     }
 }