コード例 #1
0
ファイル: routerlite.php プロジェクト: winorun/zdvlib.srv
 /**
  * Обработка переданного 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();
     }
     //echo self::$routes[$requestedUrl];
     //print_r(self::$routes);
     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 обработан!
         }
     }
     print_r(self::$params);
     return self::executeAction();
 }