public function testCreate() { $endPoint = new Point\ControllerDynamicAction(['controller' => 'DemoController']); $route = new Route('demo/{:id}/', $endPoint, ['id' => '\\d+'], Route::ONLY_XHR, ['get']); self::assertTrue($route->getPoint() instanceof Point\IPoint); self::assertEquals('demo/{:id}/', $route->getPath()); self::assertCount(1, $route->getMethods()); self::assertEquals(['GET'], $route->getMethods()); self::assertCount(1, $route->getRestrictions()); self::assertEquals(['id' => '\\d+'], $route->getRestrictions()); self::assertEquals(Route::ONLY_XHR, $route->typeRequest); }
/** * @param Route $route * @return string */ protected function getRegExp(Route $route) { $regexp = $route->getPath(); $restrictions = $route->getRestrictions(); if (preg_match_all('~{(.*)}~Uiu', $regexp, $placeholders)) { foreach ($placeholders[0] as $index => $match) { $name = $placeholders[1][$index]; $replace = array_key_exists($name, $restrictions) ? $restrictions[$name] : '.*'; $replace = '(?<' . $name . '>' . $replace . ')'; $regexp = str_replace($match, $replace, $regexp); } } return $regexp; }