Beispiel #1
0
 /**
  * Method to test getMatcher().
  *
  * @return void
  *
  * @covers Windwalker\Router\Router::getMatcher
  */
 public function testGetAndSetMatcher()
 {
     $this->assertInstanceOf('Windwalker\\Router\\Matcher\\MatcherInterface', $this->instance->getMatcher());
     $matcher = new TrieMatcher();
     $this->instance->setMatcher($matcher);
     $this->assertSame($matcher, $this->instance->getMatcher());
 }
 /**
  * Register routing.
  *
  * @param Router $router Router object.
  * @param string $option The component option name.
  *
  * @throws \LogicException
  * @return  Router Registered router.
  */
 public static function registerRouting(Router $router, $option)
 {
     // Don't register twice.
     if (self::$registered) {
         return $router;
     }
     // Register routers.
     $maps = static::getRouting($option);
     foreach ((array) $maps as $name => $map) {
         if (empty($map->pattern) || empty($map->view)) {
             // throw new \LogicException('Are you kidding me? no map, no run! Add pattern and view to: ' . $name);
         }
         $buildHandler = !empty($map->buildHandler) ? $map->buildHandler : '';
         $parseHandler = !empty($map->parseHandler) ? $map->parseHandler : '';
         $router->register($name, $map->pattern, $map->view, $buildHandler, $parseHandler);
     }
     return $router;
 }
 /**
  * parseRoute
  *
  * @param string $route
  * @param string $method
  * @param array  $options
  *
  * @throws  \UnexpectedValueException
  * @return  array|boolean
  */
 public function match($route, $method = 'GET', $options = array())
 {
     $matched = parent::match($route, $method, $options);
     $vars = $matched->getVariables();
     if (!array_key_exists('_controller', $vars)) {
         throw new \UnexpectedValueException('Controller not found.', 500);
     }
     $controller = $vars['_controller'];
     unset($vars['_controller']);
     $this->setVariables($vars);
     return $controller;
 }
 /**
  * Register routing.
  *
  * @param Router  $router Router object.
  * @param string  $option The component option name.
  * @param string  $type   The routing file type.
  *
  * @return RouterInterface
  */
 public static function registerRouting(Router $router, $option, $type = self::TYPE_JSON)
 {
     // Don't register twice.
     if (self::$registered) {
         return $router;
     }
     // Register routers.
     $maps = static::getRouting($option, $type);
     $default = array('pattern' => null, 'view' => null, 'task' => null, 'layout' => null, 'format' => null, 'methods' => null, 'requirements' => null, 'extra' => null, 'buildHandler' => null, 'parseHandler' => null);
     foreach ((array) $maps as $name => $map) {
         $map = array_merge($default, $map);
         if (empty($map['pattern'])) {
             throw new \LogicException('Are you kidding me? Add pattern to: ' . $name);
         }
         $variables = array('view' => $map['view'], 'task' => $map['task'], 'layout' => $map['layout'], 'format' => $map['format']);
         $allowMethods = (array) $map['methods'];
         $options['requirements'] = (array) $map['requirements'];
         $options['extra'] = (array) $map['extra'];
         $options['extra']['buildHandler'] = !empty($map['buildHandler']) ? $map['buildHandler'] : '';
         $options['extra']['parseHandler'] = !empty($map['parseHandler']) ? $map['parseHandler'] : '';
         $router->addRoute(new Route($name, $map['pattern'], $variables, $allowMethods, $options));
     }
     return $router;
 }
 /**
  * Match route.
  *
  * @param string $route
  * @param string $method
  * @param array  $options
  *
  * @return  Route|boolean
  */
 public function match($route, $method = 'GET', $options = array())
 {
     $matched = parent::match($route, $method, $options);
     $extra = $matched->getExtra();
     if (isset($extra['parseHandler']) && is_callable($extra['parseHandler'])) {
         $variables = call_user_func_array($extra['parseHandler'], array($matched->getVariables()));
         $matched->setVariables($variables);
     }
     $this->matched = $matched;
     $this->extra->reset()->load($matched->getExtra());
     return $matched;
 }