Example #1
0
 public function add($httpMethod, $uri, $handler, $middlewares = [])
 {
     $route = new Route($httpMethod, $uri, $handler, $this->strategy);
     $route->setMiddlewares($middlewares);
     $route->setGroup($this);
     $this->routes[] = $route;
     return $route;
 }
Example #2
0
 /**
  * Creates a new route instance.
  *
  * @param string|string[] $method   HTTP request method(s)
  * @param string          $path     URI path
  * @param string|callable $callback
  * @param string|null     $name
  *
  * @return \Elegant\Http\Route\Route
  */
 private function create($method, $path, $callback, $name = null)
 {
     $methods = (array) $method;
     $scheme = $host = '';
     $middlewares = $this->middlewares;
     $conditions = $this->conditions;
     foreach ($this->groups as $group) {
         foreach ($group as $key => $value) {
             switch ($key) {
                 case 'namespace':
                     if (is_string($callback)) {
                         $callback = $value . $callback;
                     }
                     break;
                 case 'name.prefix':
                     if (!is_null($name)) {
                         $name = $value . $name;
                     }
                     break;
                 case 'name.suffix':
                     if (!is_null($name)) {
                         $name .= $value;
                     }
                     break;
                 case 'scheme':
                     $scheme = $value;
                     break;
                 case 'host':
                     $host = $value;
                     break;
                 case 'host.prefix':
                     $host = $value . $host;
                     break;
                 case 'host.suffix':
                     $host .= $value;
                     break;
                 case 'path.prefix':
                     $path = $value . $path;
                     break;
                 case 'path.suffix':
                     $path .= $value;
                     break;
                 case 'methods':
                     $methods = array_merge($methods, $value);
                     break;
                 case 'middlewares':
                     $middlewares = array_merge($middlewares, $value);
                     break;
                 case 'conditions':
                     $conditions = array_replace($conditions, $value);
                     break;
             }
         }
     }
     $route = new Route($methods, $path, $callback, $name);
     $route->setScheme($scheme);
     $route->setHost($host);
     $route->setMiddlewares($middlewares);
     $route->setConditions($conditions);
     return $route;
 }