/** * Finds the route and gets the closure or controller * @return boolean doesn't answer anything, just to quit the method from running. * Errors that can be thrown here. * Code Desc * C_100 Controller file not found. * C_101 Controller classname not valid. * C_102 Methodname not valid. */ public function getPage() { $exp = explode('/', Url::uri()); $i = count($exp); $_data = null; while ($i) { $s = implode('/', $exp); if (Url::uri() == '') { $s = '/'; } $_data = Router::find($this->method, $s); if ($_data !== false) { break; } unset($exp[$i - 1]); $i--; } // Try to find a route that contains a wildcard. // Router::find_with_wildcard(); $data = $_data; if ($data === false) { Error::register('http_404'); return false; } if ($data['closure'] == true) { $this->view = $data['func'](); if (!$this->view instanceof View) { $this->isView = false; } } else { // Getting the correct controller and method starts here. if (strpos($data['func'], '@') === false) { $this->content = $data['func']; return true; } list($controller, $method) = explode('@', $data['func']); if (!is_file(APP . 'controller/' . $controller . '.php')) { return Error::register('controller_100'); } require_once APP . 'controller/' . $controller . '.php'; $controller_name = $controller . '_Controller'; if (!class_exists($controller_name)) { return Error::register('controller_101'); } $ct = new $controller_name(); $restful = isset($ct->restful) ? $ct->restful : false; $r_method = $restful === true ? $this->method . '_' : ''; $method_name = $r_method . $method; if (!method_exists($controller_name, $method_name)) { return Error::register('controller_102'); } $this->view = call_user_func(array($ct, $method_name)); if (!$this->view instanceof View) { $this->isView = false; } if ($this->view instanceof Json) { $this->isJson = true; } } }
public static function boot() { Config::init(); require_once SYS . 'model/database/connector.php'; require_once COMPONENTS . 'database/nitrogen/nitrogen.php'; require_once COMPONENTS . 'database/nitrogen/builder.php'; require_once SYS . 'model/model.php'; Autoload::load(); Request::init(); Response::init(); Url::init(); Log::init(); $boot = new Bootstrap(Config::$path); $boot->getPage(); $boot->getContent(); if (Config::$profiler === true) { echo Log::render(); } }