function run() { global $database_config, $routing; $application = new Application(); $model = new Model(); $model->__connect_to_database($database_config[ENVIRONMENT]); // Load Up Controller $routing->params($_SERVER['REQUEST_URI']); if ($routing->current->events['nested_controller_path']) { $controller_path = $routing->current->events['nested_controllers']; } else { $path = explode("/", $routing->current->events['controller']); array_pop($path); $controller_path = $path; } // Require base controller if there is one $base_controller = $controller_path[count($controller_path) - 1]; $base_controller = APPLICATION_ROOT . "/app/controllers/" . join($controller_path, "/") . "/{$base_controller}_controller.php"; if (file_exists($base_controller)) { require_once $base_controller; } // Require needed controller require_once APPLICATION_ROOT . "/app/controllers/{$routing->current->events['nested_controller_path']}/{$routing->current->events['controller']}_controller.php"; $controller_name = explode("/", $routing->current->events['controller']); $controller_name = array_pop($controller_name); $controller = ucwords($controller_name) . "Controller"; $controller = new $controller(); // Set Controller Params $controller->params = $this->params(); $controller->route = $routing->current; return $controller->render(join("/", $controller_path), $controller_name, $routing->current->events['action']); }