/** * testHasAndGetRoute * * @return void * * @covers Windwalker\Router\Router::hasRoutes * @covers Windwalker\Router\Router::getRoutes */ public function testHasAndGetRoute() { $this->instance->addRoute($route = new Route('foo', '/foo')); $this->assertFalse($this->instance->hasRoute('bar')); $this->assertTrue($this->instance->hasRoute('foo')); $this->assertNull($this->instance->getRoute('bar')); $this->assertSame($route, $this->instance->getRoute('foo')); }
/** * Method to test addRoute(). * * @return void * * @covers Windwalker\Router\Router::addRoute */ public function testAddRoute() { $this->instance->addRoute(new Route(null, 'flower/(id)/(alias)', array('_controller' => 'FlowerController'))); $routes = $this->instance->getRoutes(); $this->assertInstanceOf('Windwalker\\Router\\Route', $routes[0]); $result = $this->instance->match('flower/5/foo'); $this->assertInstanceOf('Windwalker\\Router\\Route', $result); $result = $result->getVariables(); $this->assertEquals('FlowerController', $result['_controller']); $this->assertEquals('foo', $result['alias']); $this->instance->addRoute(new Route('sakura', 'flower/(id)/sakura', array('_controller' => 'SakuraController'))); $routes = $this->instance->getRoutes(); $this->assertInstanceOf('Windwalker\\Router\\Route', $routes['sakura']); $this->instance->addRoute('foo', 'foo/bar/baz', array('_ctrl' => 'yoo')); $routes = $this->instance->getRoutes(); $this->assertInstanceOf('Windwalker\\Router\\Route', $routes['foo']); }
/** * addRoute * * @param string $pattern * @param string $controller * * @throws \LogicException * @throws \InvalidArgumentException * @return static */ public function addMap($pattern, $controller = null) { if (!is_string($controller)) { throw new \InvalidArgumentException('Please give me controller name string. ' . ucfirst(gettype($controller)) . ' given.'); } if ($pattern instanceof Route) { throw new \LogicException('Do not use Route object in ' . get_called_class()); } return parent::addRoute(null, $pattern, array('_controller' => $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; }