Example #1
0
 function start()
 {
     // default values
     $controller_name = 'Main';
     $action_name = "default";
     $isArgExist = false;
     $arg = null;
     $url = explode('/', $_SERVER['REQUEST_URI']);
     // get controller
     if (!empty($url[1])) {
         $controller_name = $url[1];
     } else {
         $controller_name = 'Login';
     }
     // get action
     if (!empty($url[2])) {
         if (!preg_match("/[0-9]+/", $url[2])) {
             $action_name = $url[2];
         } else {
             $action_name = "get";
             $arg = $url[2];
             $isArgExist = true;
         }
     }
     //prefixes
     $model_name = 'Model_' . $controller_name;
     $controller_name = 'Controller_' . $controller_name;
     $action_name = "action_" . $action_name;
     // model files
     $model_file = strtolower($model_name) . '.php';
     $model_path = "app/models/" . $model_file;
     // include models files
     if (file_exists($model_path)) {
         require $model_path;
     }
     // assign controllers file
     $controller_file = strtolower($controller_name) . '.php';
     $controller_path = "app/controllers/" . $controller_file;
     // include controllers files
     if (file_exists($controller_path)) {
         require $controller_path;
     } else {
         Route::ErrorPage();
     }
     // controllers creation
     $controller = new $controller_name();
     $action = $action_name;
     // check issset method and create a handler
     if (method_exists($controller, $action)) {
         // run it
         if ($isArgExist) {
             $controller->{$action}($arg);
         } else {
             $controller->{$action}();
         }
     } else {
         Route::ErrorPage();
     }
 }
Example #2
0
 static function start()
 {
     session_start();
     // контроллер и действие по умолчанию
     $controller_name = 'Main';
     $action_name = 'index';
     $params = null;
     $routes = explode('/', $_SERVER['REQUEST_URI']);
     // получаем имя контроллера
     if (!empty($routes[1])) {
         $controller_name = $routes[1];
     }
     // получаем имя экшена
     if (!empty($routes[2])) {
         $action_name = $routes[2];
     }
     if (!empty($routes[3])) {
         $params = $routes[3];
     } else {
         if (isset($_REQUEST)) {
             $params = $_REQUEST;
         }
     }
     // добавляем префиксы
     switch ($controller_name) {
         case "Registration":
             $model_name = "Model_Users";
             break;
         case "Authorization":
             $model_name = "Model_Users";
             break;
         case "AdAuth":
             $model_name = "Model_Users";
             break;
         case "AdUsers":
             $model_name = "Model_Users";
             break;
         case "Edit":
             $model_name = "Model_Users";
             break;
         case "AdProducts":
             $model_name = "Model_Products";
             break;
         case "AdCategories":
             $model_name = "Model_Categories";
             break;
         case "AdOrders":
             $model_name = "Model_Orders";
             break;
         default:
             $model_name = 'Model_' . $controller_name;
             break;
     }
     $controller_name = "Controller_" . $controller_name;
     $action_name = "action_" . $action_name;
     // подцепляем файл с классом модели (файла модели может и не быть)
     $model_file = $model_name . '.php';
     $model_path = "app/models/" . $model_file;
     if (file_exists($model_path)) {
         include "app/models/" . $model_file;
     }
     // подцепляем файл с классом контроллера
     $controller_file = $controller_name . '.php';
     $controller_path = "app/controllers/" . $controller_file;
     if (file_exists($controller_path)) {
         include "app/controllers/" . $controller_file;
     } else {
         /*
         правильно было бы кинуть здесь исключение,
         но для упрощения сразу сделаем редирект на страницу 404
         */
         Route::ErrorPage();
     }
     // если контроллер в файле не определен, то выбрасываем 404
     if (!class_exists($controller_name)) {
         Route::ErrorPage();
     } else {
         $controller = new $controller_name();
         $action = $action_name;
         if (method_exists($controller, $action)) {
             // вызываем действие контроллера
             if ($params) {
                 $controller->{$action}($params);
             } else {
                 $controller->{$action}();
             }
         } else {
             // здесь также разумнее было бы кинуть исключение
             Route::ErrorPage();
         }
     }
 }