public function run() { // Получить строку запроса $uri = $this->getUri(); if ($uri == '') { include_once ROOT . '/controllers/IndexController.php'; $controllerObject = new IndexController(); $controllerObject->render(); } else { // Проверить наличие такого запроса в routes.php foreach ($this->routes as $uriPattern => $path) { // Сравниваем $uriPattern и $uri if (preg_match("~{$uriPattern}~", $uri)) { // Получаем внутренний путь из внешнего согласно правилу $internalRoute = preg_replace("~{$uriPattern}~", $path, $uri); // Определить контроллер, action, параметры $segments = explode('/', $internalRoute); $controllerName = array_shift($segments) . 'Controller'; $controllerName = ucfirst($controllerName); $actionName = array_shift($segments); $parameters = array_shift($segments); // Подключить файл класса-контроллера $controllerFile = ROOT . '/controllers/' . $controllerName . '.php'; if (file_exists($controllerFile)) { include_once $controllerFile; } //Создать объект, вызвать метод (action) $controllerObject = new $controllerName(); $controllerObject->{$actionName}($parameters); //$result = call_user_func_array(array($controllerObject, $actionName), $parameters); //$controllerObject->$actionName($parameters); break; // if ($result != null) { // break; // } } } } // if (!isset($controllerObject)){ // $controllerName = "Controller404"; // $actionName = "action_404"; // $controllerFile = ROOT.'/controllers/'.$controllerName.'.php'; // if (file_exists($controllerFile)) { // include_once($controllerFile); // } // $controllerObject = new $controllerName; // $result = $controllerObject->$actionName(); // } }
<?php session_start(); switch ($_GET['view']) { case 'add_room': include_once 'app/controller/rooms_controller.php'; $view = new RoomsController(); $view->addRoom($_POST['name'], $_POST['public']); break; case 'individual_room': include_once 'app/controller/rooms_controller.php'; $view = new RoomsController(); $view->individualRoom($_GET['roomId']); break; default: include_once 'app/controller/index_controller.php'; $view = new IndexController(); $view->render(); }