Example #1
0
 public static function init()
 {
     $url = $_SERVER['REQUEST_URI'];
     $isCustom = false;
     if (count(self::$rules)) {
         foreach (self::$rules as $ruleKey => $ruleData) {
             $params = self::ruleMatch($ruleKey, $url);
             if ($params) {
                 self::$controller = $ruleData['controller'];
                 self::$action = $ruleData['action'];
                 self::$params = $params;
                 $isCustom = true;
                 break;
             }
         }
     }
     if (!$isCustom) {
         self::defaultRoutes($url);
     }
     if (!strlen(self::$controller)) {
         self::$controller = 'site';
     }
     if (!strlen(self::$action)) {
         self::$action = '';
     }
     if (self::$action == ':site') {
         self::$action = self::getParam("site");
     }
 }
Example #2
0
 /**
  * Обработка переданного URL
  * Dispatch received URL
  */
 public static function Dispatch($requestedUrl = null)
 {
     // Если URL не передан, берем его из REQUEST_URI
     if ($requestedUrl === null) {
         $uri = reset(explode('?', $_SERVER["REQUEST_URI"]));
         $requestedUrl = urldecode(rtrim($uri, '/'));
     }
     self::$requestedUrl = $requestedUrl;
     // если URL и маршрут полностью совпадают
     if (isset(self::$routes[$requestedUrl])) {
         self::$params = self::SplitUrl(self::$routes[$requestedUrl]);
         return self::ExecuteAction();
     }
     foreach (self::$routes as $route => $uri) {
         // Заменяем wildcards на рег. выражения
         if (strpos($route, ':') !== false) {
             $route = str_replace(':any', '(.+)', str_replace(':num', '([0-9]+)', $route));
         }
         if (preg_match('#^' . $route . '$#', $requestedUrl)) {
             if (strpos($uri, '$') !== false && strpos($route, '(') !== false) {
                 $uri = preg_replace('#^' . $route . '$#', $uri, $requestedUrl);
             }
             self::$params = self::SplitUrl($uri);
             break;
             // URL обработан!
         }
     }
     return self::ExecuteAction();
 }
Example #3
0
 public static function parse($url)
 {
     $url = rtrim($url, '/');
     $url = explode('/', $url);
     if ($url[0]) {
         self::$name = ucfirst(strtolower($url[0]));
     }
     self::$method = $url[1];
     self::$params = array();
     if (count($url) > 2) {
         //есть параметры
         for ($i = 2; $i < count($url); $i++) {
             self::$params[] = $url[$i];
         }
     }
 }
Example #4
0
 public static function start()
 {
     $r = !empty($_GET['routes']) ? $_GET['routes'] : '';
     self::$routes = explode('/', $r);
     $params = self::$routes;
     unset(self::$params[0], self::$params[1]);
     switch (self::$routes[0]) {
         case 'module1':
         case 'module2':
             unset(self::$params[2]);
             self::$params = array_values($params);
             self::module();
             break;
         default:
             self::$params = array_values($params);
             self::getCtrlNames();
             self::model();
             self::controller();
     }
 }
Example #5
0
 public static function setParams($arr)
 {
     self::$params = $arr;
 }
Example #6
0
 private function init()
 {
     //get user requested route
     if (isset($_GET['node'])) {
         //define route without parameters (helps with showing base URI request)
         $route = $_GET['node'];
         self::$route = $route;
         //break requested route into chunks in array
         $route_chunks = explode("/", $route);
         //define controller
         $controller = $route_chunks[0];
         self::$controller = $controller;
         //define controller directory
         $controller_dir = CONTROLLER_DIR . $controller;
         self::$controller_dir = $controller_dir;
         //define format
         if (!empty($route_chunks[1])) {
             $format = $route_chunks[1];
             self::$format = $format;
         }
         //define if group has been requested
         if (!empty($route_chunks[2])) {
             $group = $route_chunks[2];
             self::$group = $group;
         }
         //define parameters - get full url etc and extract all strings after &..
         global $settings;
         $request_uri = $settings['request_uri'];
         //break requested route into chunks in array
         $route_params = explode("&", $request_uri);
         //remove first value from array & return $route_params as just parameters
         $params_shift = array_shift($route_params);
         //update $params array
         foreach ($route_params as $val) {
             $param_chunks = explode("=", $val);
             $params[$param_chunks[0]] = $param_chunks[1];
         }
         if (isset($params)) {
             self::$params = $params;
         } else {
             self::$params = null;
         }
     }
 }
Example #7
0
 public function testClosures()
 {
     $router = new Router($this->collection);
     $router->handle('closure/123/alpha');
     $closure = $router->controllerName();
     $expects = call_user_func_array($closure, $router->params());
     $this->assertTrue(is_callable($router->controllerName()));
     $this->assertEquals($expects, '123-alpha');
 }
Example #8
0
 private function _init()
 {
     $route = $this->_set_route();
     $route = substr($route, -1, 1) == "/" ? substr($route, 0, -1) : $route;
     $route = $route ? explode("/", $route) : null;
     // define the controller directory
     if (isset(self::$config_route['controller_dir_in_route']) && self::$config_route['controller_dir_in_route'] === true) {
         if (is_array($route) && count($route)) {
             self::$controller_dir = array_shift($route);
         } elseif (isset(self::$config_route["default_controller_dir"])) {
             self::$config_route["default_controller_dir"];
         } else {
             trigger_error("ROUTER: DEFAULT CONTROLLER DIR NOT SET");
         }
     }
     // define the controller
     if (is_array($route) && count($route)) {
         self::$controller = array_shift($route);
     } elseif (isset(self::$config_route['default_controller'])) {
         self::$controller = self::$config_route["default_controller"];
     } else {
         trigger_error("ROUTER: DEFAULT CONTROLLER NOT SET");
     }
     // define action
     if (is_array($route) && count($route)) {
         self::$action = array_shift($route);
     } elseif (isset(self::$config_route['default_action'])) {
         self::$action = self::$config_route['default_action'];
     } else {
         trigger_error("ROUTER: DEFAULT ACTION NOT SET");
     }
     // define the parameters
     if ($route) {
         self::$params = $route;
     }
 }
Example #9
0
 static function init()
 {
     $uri = str_replace(Conf::$BASE_URL, '', 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
     self::$params = $_GET || [];
     self::$uri = strtok($uri, '?');
 }