Example #1
0
 public static function start()
 {
     $controller_name = 'Main';
     $action_name = 'index';
     $routes = explode('/', $_SERVER['REQUEST_URI']);
     if ($_SERVER['REQUEST_URI'] === '/promo/category/') {
         $model_name = 'Category';
     } elseif ($_SERVER['REQUEST_URI'] === '/promo/') {
         $model_name = 'Article';
     } else {
         $model_name = $routes[2];
     }
     // получаем имя контроллера
     if (!empty($routes[2])) {
         $controller_name = $routes[2];
     }
     // получаем имя экшена
     if (!empty($routes[3])) {
         //$route_act = explode('.', $routes[3]);
         //$routes[3] = $route_act[0];
         $action_name = $routes[3];
     }
     // добавляем префиксы
     $model_name = 'Model_' . $model_name;
     $controller_name = 'Controller_' . $controller_name;
     $action_name = 'action_' . $action_name;
     // подцепляем файл с классом модели (файла модели может и не быть)
     $model_file = strtolower($model_name) . '.php';
     $model_path = 'app/model/' . $model_file;
     if (file_exists($model_path)) {
         include_once 'app/model/' . $model_file;
     }
     // подцепляем файл с классом контроллера
     $controller_file = strtolower($controller_name) . '.php';
     $controller_path = 'app/controller/' . $controller_file;
     //var_dump($model_name, $controller_name, $action_name);
     //var_dump($model_file, $model_path, $controller_file, $controller_path);
     try {
         if (file_exists($controller_path)) {
             $myController = strtolower(getController($controller_name));
             $myModel = strtolower(getController($model_name));
             //header('Location: /promo'.$myModel.'/'.$myController.'/');
             include 'app/controller/' . $controller_file;
             // создаем контроллер
             $controller = new $controller_name();
             $action = $action_name;
             try {
                 if (method_exists($controller, $action)) {
                     // вызываем действие контроллера
                     $controller->{$action}();
                 } else {
                     $controller = new Controller();
                     $controller->ErrorPage404();
                 }
             } catch (BadMethodCallException $e2) {
                 $error = 'There is an error-2: ' . $e2->getMessage() . '<br>' . $e2->getCode() . '<br>' . $e2->getLine() . '<br>' . $e2->getFile();
                 die($error);
             }
         } else {
             $controller = new Controller();
             $controller->ErrorPage404();
         }
     } catch (Exception $e) {
         $error = 'There is an error: ' . $e->getMessage() . '<br>' . $e->getCode() . '<br>' . $e->getLine() . '<br>' . $e->getFile();
         die($error);
     }
 }