diff --git a/src/Pecee/SimpleRouter/Route/LoadableRoute.php b/src/Pecee/SimpleRouter/Route/LoadableRoute.php index 7c93a60..9d7a593 100644 --- a/src/Pecee/SimpleRouter/Route/LoadableRoute.php +++ b/src/Pecee/SimpleRouter/Route/LoadableRoute.php @@ -82,14 +82,16 @@ abstract class LoadableRoute extends Route implements ILoadableRoute { $this->url = ($url === '/') ? '/' : '/' . trim($url, '/') . '/'; + $parameters = []; if (strpos($this->url, $this->paramModifiers[0]) !== false) { $regex = sprintf(static::PARAMETERS_REGEX_FORMAT, $this->paramModifiers[0], $this->paramOptionalSymbol, $this->paramModifiers[1]); if ((bool)preg_match_all('/' . $regex . '/u', $this->url, $matches) !== false) { - $this->parameters = array_fill_keys($matches[1], null); + $parameters = array_fill_keys($matches[1], null); } } + $this->parameters = $parameters; return $this; } diff --git a/tests/Pecee/SimpleRouter/Dummy/Route/DummyLoadableRoute.php b/tests/Pecee/SimpleRouter/Dummy/Route/DummyLoadableRoute.php new file mode 100644 index 0000000..8361c05 --- /dev/null +++ b/tests/Pecee/SimpleRouter/Dummy/Route/DummyLoadableRoute.php @@ -0,0 +1,11 @@ +assertEmpty($route->getParameters()); + + $route->setUrl('/'); + $this->assertEmpty($route->getParameters()); + + $expected = ['param' => null, 'optionalParam' => null]; + $route->setUrl('/{param}/{optionalParam?}'); + $this->assertEquals($expected, $route->getParameters()); + + $expected = ['otherParam' => null]; + $route->setUrl('/{otherParam}'); + $this->assertEquals($expected, $route->getParameters()); + + $expected = []; + $route->setUrl('/'); + $this->assertEquals($expected, $route->getParameters()); + } +} \ No newline at end of file