Example #1
0
 static function compileRoutes()
 {
     $result = array();
     $resultKeys = array();
     foreach (self::$routes as $key => $value) {
         // strip off any leading /s
         $key = preg_replace("/^\\/+/i", "", $key);
         $key = "#^" . preg_quote($key, "#") . "\$#i";
         self::$_current_compiled_value = $value;
         self::$_current_compiled_count = 0;
         self::$_current_compiled_keys = array();
         // lots of escaping since we've already quoted them above
         $key = preg_replace("#\\\\\\[([^\\]]+)\\\\]#i", "(|\\1)", $key);
         $key = preg_replace_callback("#\\\\:([a-z0-9]+)#i", function ($matches) {
             Router::$_current_compiled_count++;
             // don't try to preg_replace Renderable objects
             if (!is_object(Router::$_current_compiled_value)) {
                 Router::$_current_compiled_value = str_replace(":" . $matches[1], "\\" . Router::$_current_compiled_count, Router::$_current_compiled_value);
             }
             Router::$_current_compiled_keys[$matches[1]] = Router::$_current_compiled_count;
             return "([^/]+?)";
         }, $key);
         $result[$key] = Router::$_current_compiled_value;
         $resultKeys[$key] = Router::$_current_compiled_keys;
     }
     self::$compiled_routes = $result;
     self::$compiled_keys = $resultKeys;
 }