diff --git a/src/Pecee/SimpleRouter/Route/LoadableRoute.php b/src/Pecee/SimpleRouter/Route/LoadableRoute.php index c51eb19..b9dae4a 100644 --- a/src/Pecee/SimpleRouter/Route/LoadableRoute.php +++ b/src/Pecee/SimpleRouter/Route/LoadableRoute.php @@ -107,10 +107,10 @@ abstract class LoadableRoute extends Route implements ILoadableRoute /* Let's parse the values of any {} parameter in the url */ - $max = count($params); + $max = count($params) - 1; $keys = array_keys($params); - for ($i = 0; $i < $max; $i++) { + for ($i = $max; $i >= 0; $i--) { $param = $keys[$i]; $value = $params[$param]; diff --git a/src/Pecee/SimpleRouter/Route/Route.php b/src/Pecee/SimpleRouter/Route/Route.php index c0f15a2..d953ba1 100644 --- a/src/Pecee/SimpleRouter/Route/Route.php +++ b/src/Pecee/SimpleRouter/Route/Route.php @@ -77,10 +77,11 @@ abstract class Route implements IRoute $lastCharacter = ''; $isParameter = false; $parameter = ''; + $routeLength = strlen($route) - 1; - for ($i = 0; $i < strlen($route); $i++) { + for ($i = $routeLength; $i >= 0; $i--) { - $character = $route[$i]; + $character = strrev($route)[$i]; if ($character === '{') { /* Remove "/" and "\" from regex */ @@ -129,9 +130,9 @@ abstract class Route implements IRoute $parameters = []; - $max = count($parameterNames); + $max = count($parameterNames) - 1; - for ($i = 0; $i < $max; $i++) { + for ($i = $max; $i >= 0; $i--) { $name = $parameterNames[$i]; diff --git a/src/Pecee/SimpleRouter/Route/RouteController.php b/src/Pecee/SimpleRouter/Route/RouteController.php index f8657da..441e6c7 100644 --- a/src/Pecee/SimpleRouter/Route/RouteController.php +++ b/src/Pecee/SimpleRouter/Route/RouteController.php @@ -59,6 +59,7 @@ class RouteController extends LoadableRoute implements IControllerRoute /* Remove requestType from method-name, if it exists */ if ($method !== null) { + $max = count(static::$requestTypes); for ($i = 0; $i < $max; $i++) { @@ -70,6 +71,7 @@ class RouteController extends LoadableRoute implements IControllerRoute break; } } + $method .= '/'; } diff --git a/src/Pecee/SimpleRouter/Route/RouteGroup.php b/src/Pecee/SimpleRouter/Route/RouteGroup.php index 0cbe242..a314d54 100644 --- a/src/Pecee/SimpleRouter/Route/RouteGroup.php +++ b/src/Pecee/SimpleRouter/Route/RouteGroup.php @@ -20,9 +20,9 @@ class RouteGroup extends Route implements IGroupRoute { if (count($this->domains) > 0) { - $max = count($this->domains); + $max = count($this->domains) - 1; - for ($i = 0; $i < $max; $i++) { + for ($i = $max; $i >= 0; $i--) { $domain = $this->domains[$i]; $parameters = $this->parseParameters($domain, $request->getHost(), '.*'); diff --git a/src/Pecee/SimpleRouter/Router.php b/src/Pecee/SimpleRouter/Router.php index a34e66c..071918a 100644 --- a/src/Pecee/SimpleRouter/Router.php +++ b/src/Pecee/SimpleRouter/Router.php @@ -216,7 +216,7 @@ class Router $max = count($this->bootManagers) - 1; /* @var $manager IRouterBootManager */ - for ($i = 0; $i < $max; $i++) { + for ($i = $max; $i >= 0; $i--) { $manager = $this->bootManagers[$i]; @@ -345,10 +345,10 @@ class Router */ public function findRoute($name) { - $max = count($this->processedRoutes); + $max = count($this->processedRoutes) - 1; /* @var $route ILoadableRoute */ - for ($i = 0; $i < $max; $i++) { + for ($i = $max; $i >= 0; $i--) { $route = $this->processedRoutes[$i]; @@ -443,10 +443,10 @@ class Router /* Loop through all the routes to see if we can find a match */ - $max = count($this->processedRoutes); + $max = count($this->processedRoutes) - 1; /* @var $route ILoadableRoute */ - for ($i = 0; $i < $max; $i++) { + for ($i = $max; $i >= 0; $i--) { $route = $this->processedRoutes[$i];