3v4l.org

run code in 300+ PHP versions simultaneously
<?php /* Класс-маршрутизатор для определения запрашиваемой страницы. > цепляет классы контроллеров и моделей; > создает экземпляры контролеров страниц и вызывает действия этих контроллеров. */ class Route { static function start() { // контроллер и действие по умолчанию $controller_name = 'Main'; $action_name = 'index'; // получаем имя контроллера if (!empty($_GET['cmd'])) { $controller_name = @$_GET['cmd']; } // получаем имя экшена if (!empty($_GET['action']) ) { $action_name = @$_GET['action']; } // добавляем префиксы $model_name = 'Model_'.$controller_name; $controller_name = 'Controller_'.$controller_name; $action_name = 'action_'.$action_name; /* echo "Model: $model_name <br>"; echo "Controller: $controller_name <br>"; echo "Action: $action_name <br>"; */ // подцепляем файл с классом модели (файла модели может и не быть) $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(); $this->ErrorPage404(); } // создаем контроллер $controller = new $controller_name; $action = $action_name; if(method_exists($controller, $action)) { // вызываем действие контроллера $controller->$action(); } else { // здесь также разумнее было бы кинуть исключение Route::ErrorPage404(); } } function ErrorPage404() { $host = 'http://'.$_SERVER['HTTP_HOST'].'/'; header('HTTP/1.1 404 Not Found'); header("Status: 404 Not Found"); header('Location: ./404.html'); } } ?>

preferences:
40.16 ms | 402 KiB | 5 Q