mirror of
https://github.com/skipperbent/simple-php-router.git
synced 2026-07-11 11:32:13 +00:00
Optimised route-match behavior
This commit is contained in:
@@ -95,11 +95,7 @@ abstract class Route implements IRoute
|
|||||||
|
|
||||||
if (preg_match_all('/' . $regex . '/is', $route, $parameters)) {
|
if (preg_match_all('/' . $regex . '/is', $route, $parameters)) {
|
||||||
|
|
||||||
$parameterNamesRegex = [];
|
$urlParts = preg_split('/((\-?\/?)\{[^}]+\})/is', rtrim($route, '/'));
|
||||||
$parameterNames = $parameters[1];
|
|
||||||
$parameterRequired = [];
|
|
||||||
|
|
||||||
$urlParts = preg_split('/\{[^}]+\}/is', rtrim($route, '/'));
|
|
||||||
|
|
||||||
foreach ($urlParts as $key => $t) {
|
foreach ($urlParts as $key => $t) {
|
||||||
|
|
||||||
@@ -109,7 +105,7 @@ abstract class Route implements IRoute
|
|||||||
|
|
||||||
$name = $parameters[1][$key];
|
$name = $parameters[1][$key];
|
||||||
$regex = isset($this->where[$name]) ? $this->where[$name] : $parameterRegex;
|
$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 */
|
/* Only take matched parameters with name */
|
||||||
foreach ($parameters[1] as $name) {
|
foreach ($parameters[1] as $name) {
|
||||||
$values[$name] = $matches[$name];
|
$values[$name] = isset($matches[$name]) ? $matches[$name] : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $values;
|
return $values;
|
||||||
|
|||||||
Reference in New Issue
Block a user