Compare commits

...

4 Commits

Author SHA1 Message Date
Simon Sessingø 3e41ee28b6 Merge pull request #200 from skipperbent/v2-development
Optimised route-match behavior
2016-11-28 06:45:05 +01:00
Simon Sessingø 8f3ce68a5e Optimised route-match behavior 2016-11-28 06:43:26 +01:00
Simon Sessingø 751b4444ae Merge pull request #198 from skipperbent/v2-development
Fixed parameters not merged with default values
2016-11-28 05:53:26 +01:00
Simon Sessingø d25351f4f9 Fixed parameters not merged with default values 2016-11-28 05:53:02 +01:00
+4 -8
View File
@@ -95,11 +95,7 @@ abstract class Route implements IRoute
if (preg_match_all('/' . $regex . '/is', $route, $parameters)) {
$parameterNamesRegex = [];
$parameterNames = $parameters[1];
$parameterRequired = [];
$urlParts = preg_split('/\{[^}]+\}/is', rtrim($route, '/'));
$urlParts = preg_split('/((\-?\/?)\{[^}]+\})/is', rtrim($route, '/'));
foreach ($urlParts as $key => $t) {
@@ -109,7 +105,7 @@ abstract class Route implements IRoute
$name = $parameters[1][$key];
$regex = isset($this->where[$name]) ? $this->where[$name] : $parameterRegex;
$regex = sprintf('(?P<%s>%s)', $name, $regex) . $parameters[2][$key];
$regex = sprintf('\-?\/?(?P<%s>%s)', $name, $regex) . $parameters[2][$key];
}
@@ -128,7 +124,7 @@ abstract class Route implements IRoute
/* Only take matched parameters with name */
foreach ($parameters[1] as $name) {
$values[$name] = $matches[$name];
$values[$name] = isset($matches[$name]) ? $matches[$name] : null;
}
return $values;
@@ -442,7 +438,7 @@ abstract class Route implements IRoute
$this->originalParameters = $parameters;
}
$this->parameters = $parameters;
$this->parameters = array_merge($this->parameters, $parameters);
return $this;
}