From 8f3ce68a5e0713965959fe381308fb991292986e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Sessing=C3=B8?= Date: Mon, 28 Nov 2016 06:43:26 +0100 Subject: [PATCH] Optimised route-match behavior --- src/Pecee/SimpleRouter/Route/Route.php | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/Pecee/SimpleRouter/Route/Route.php b/src/Pecee/SimpleRouter/Route/Route.php index d15299e..1204e6a 100644 --- a/src/Pecee/SimpleRouter/Route/Route.php +++ b/src/Pecee/SimpleRouter/Route/Route.php @@ -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;