示例#1
0
 public function testAddRouteSet()
 {
     $blogSet = new RouteSet();
     $blogSet->setSegmentSeparators(array('/', '-'));
     $blogSet->addRoute('posts/:id-:slug', array('controller' => 'blog', 'action' => 'view'), array('id' => '\\d+', 'slug' => '[a-zA-Z_]+'));
     $blogSet->addRoute('archives/:year/:month/:day', array('controller' => 'blog', 'action' => 'by_date', 'month' => null, 'day' => null), array('year' => '\\d{4}', 'day' => '\\d{1,2}', 'month' => '\\d{1,2}'));
     $set = new RouteSet();
     $set->addRoute('', array('controller' => 'home'));
     $set->addRouteSet('blog/', $blogSet);
     $this->assertEquals(array('controller' => 'blog', 'action' => 'by_date', 'year' => 2006, 'month' => 02, 'day' => 14), $set->recognizePath('/blog/archives/2006/02/14'));
     $this->assertEquals(array('controller' => 'blog', 'action' => 'by_date', 'year' => 2006, 'month' => 02, 'day' => null), $set->recognizePath('/blog/archives/2006/02'));
     $this->assertEquals(array('controller' => 'blog', 'action' => 'by_date', 'year' => 2006, 'month' => null, 'day' => null), $set->recognizePath('/blog/archives/2006'));
     $this->assertEquals(array('controller' => 'blog', 'action' => 'view', 'id' => 45, 'slug' => 'foo_bar'), $set->recognizePath('/blog/posts/45-foo_bar'));
     $this->assertEquals(array('controller' => 'blog', 'action' => 'view', 'id' => 45), $set->recognizePath('/blog/posts/45'));
     $this->assertEquals(array('controller' => 'home'), $set->recognizePath('/'));
     /*$this->assertEquals(
           'blog/posts/45-foo_bar',
           $set->generate(array('controller'=>'blog', 'action' => 'view', 'id' => 45, 'slug' => 'foo_bar'))
       );*/
 }