Example #1
0
 static function start()
 {
     // контроллер и действие по умолчанию
     $controller_name = 'Main';
     $action_name = 'index';
     $routes = explode('/', $_SERVER['REQUEST_URI']);
     $language = $routes[1];
     // получаем имя контроллера
     if (!empty($routes[2])) {
         $controller_name = $routes[2];
     }
     // получаем имя экшена
     if (!empty($routes[3])) {
         $action_name = $routes[3];
     }
     // получаем аргумент
     if (!empty($routes[4])) {
         $id = $routes[4];
     }
     if (isset($_POST['submit']) && !empty($_POST['login']) && !empty($_POST['pass'])) {
         $login = $_POST['login'];
         $pass = $_POST['pass'];
         $log_in = new Model();
         $log_in->log_in($login, $pass);
     }
     // добавляем префиксы
     $model_name = 'Model_' . $controller_name;
     $controller_name = 'Controller_' . $controller_name;
     $action_name = 'action_' . $action_name;
     // подцепляем файл с классом модели (файла модели может и не быть)
     $model_file = strtolower($model_name) . '.php';
     $model_path = "application/models/" . $model_file;
     if (file_exists($model_path)) {
         include "application/models/" . $model_file;
     }
     // подцепляем файл с классом контроллера
     $controller_file = strtolower($controller_name) . '.php';
     $controller_path = "application/controllers/" . $controller_file;
     if (file_exists($controller_path)) {
         include "application/controllers/" . $controller_file;
     } else {
         /*
         правильно было бы кинуть здесь исключение,
         но для упрощения сразу сделаем редирект на страницу 404
         */
         Route::ErrorPage404();
     }
     $model_language = new Model();
     $text = $model_language->language($language);
     // создаем контроллер
     $controller = new $controller_name();
     $action = $action_name;
     if (method_exists($controller, $action)) {
         // вызываем действие контроллера
         $controller->{$action}($language, $text, $id);
     } else {
         // здесь также разумнее было бы кинуть исключение
         Route::ErrorPage404();
     }
 }