method() static public method

Returns the current request method
static public method ( ) : string
return string POST, GET, DELETE, PUT
Beispiel #1
0
 function map()
 {
     $url = url::strip_query(server::get('request_uri'));
     $url = str_replace(rtrim(c::get('router.root'), '/'), '', $url);
     $method = r::method();
     foreach (self::$routes as $key => $route) {
         if (!in_array($method, $route['methods'])) {
             continue;
         }
         $key = str_replace(')', ')?', $key);
         $args = array();
         $regex = preg_replace_callback('#@([\\w]+)(:([^/\\(\\)]*))?#', function ($matches) use(&$args) {
             $args[$matches[1]] = null;
             if (isset($matches[3])) {
                 return '(?P<' . $matches[1] . '>' . $matches[3] . ')';
             }
             return '(?P<' . $matches[1] . '>[^/\\?]+)';
         }, $key);
         if (preg_match('#^' . $regex . '(?:\\?.*)?$#i', $url, $matches)) {
             foreach ($args as $k => $v) {
                 self::$params[$k] = array_key_exists($k, $matches) ? urldecode($matches[$k]) : null;
             }
             return $route['callback'];
         }
     }
     return false;
 }
Beispiel #2
0
 /**
  * Iterate through every route to find a matching route.
  *
  * @param  string $path Optional path to match against
  * @return Route
  */
 public function run($path = null)
 {
     $method = r::method();
     $ajax = r::ajax();
     $https = r::ssl();
     $routes = a::get($this->routes, $method, array());
     // detect path if not set manually
     if ($path === null) {
         $path = implode('/', (array) url::fragments(detect::path()));
     }
     // empty urls should never happen
     if (empty($path)) {
         $path = '/';
     }
     foreach ($routes as $route) {
         if ($route->https and !$https) {
             continue;
         }
         if ($route->ajax and !$ajax) {
             continue;
         }
         // handle exact matches
         if ($route->pattern == $path) {
             $this->route = $route;
             break;
         }
         // We only need to check routes with regular expression since all others
         // would have been able to be matched by the search for literal matches
         // we just did before we started searching.
         if (strpos($route->pattern, '(') === false) {
             continue;
         }
         $preg = '#^' . $this->wildcards($route->pattern) . '$#u';
         // If we get a match we'll return the route and slice off the first
         // parameter match, as preg_match sets the first array item to the
         // full-text match of the pattern.
         if (preg_match($preg, $path, $parameters)) {
             $this->route = $route;
             $this->route->arguments = array_slice($parameters, 1);
             break;
         }
     }
     if ($this->route and $this->filterer($this->route->filter) !== false) {
         return $this->route;
     } else {
         return null;
     }
 }
Beispiel #3
0
 public function testMethod()
 {
     $this->assertEquals('GET', r::method());
 }