Example #1
0
 /**
  * @param string $name
  * @param array|string $method
  * @param Route|string $pattern
  * @param string|callback $handler
  * @return $this
  */
 public function register($name, $pattern, $handler, $method = ['GET', 'POST'])
 {
     $pattern = Routing::explodeUrl($pattern);
     if ($pattern instanceof Route) {
         $route = $pattern;
     } else {
         $route = new Route($handler);
         foreach ($pattern as $segment) {
             if (preg_match(self::PREG_VARIABLE, $segment, $matches)) {
                 $var = Arr::get($matches, 1);
                 $value = Arr::get($matches, 3);
                 $route->registerVar($var, Arr::get($this->filters, $value, $value));
                 continue;
             }
             $route->registerBlock($segment);
         }
     }
     $this->collection[$name] = ['method' => $this->prepareMethod($method), 'route' => $route];
     return $this;
 }