diff --git a/src/SegmentRouterTrait.php b/src/SegmentRouterTrait.php index 7266a8c..e0e0357 100644 --- a/src/SegmentRouterTrait.php +++ b/src/SegmentRouterTrait.php @@ -71,33 +71,22 @@ trait SegmentRouterTrait } // params will hold any dynamic segments we find - $params = array_reduce( - explode('/', trim($uri, '/')), - function ($carry, $segment) use (&$node) { - if (isset($node[$segment])) { - $node = $node[$segment]; - } elseif (isset($node[':x'])) { - $carry[] = $segment; - $node = $node[':x']; - } else { - throw new \Exception('404'); - } - return $carry; - }, - [] - ); + $params = []; + foreach (explode('/', trim($uri, '/')) as $segment) { + if (isset($node[$segment])) { + $node = $node[$segment]; + } elseif (isset($node[':x'])) { + $params[] = $segment; + $node = $node[':x']; + } else { + return ['code' => 404, 'handler' => null, 'params' => []]; + } + } // if we found a handler for the method, return it and any params. if not, return a 405 return isset($node[$method]) - ? [ - 'code' => 200, - 'handler' => $node[$method], - 'params' => $params ?? []] - : [ - 'code' => 405, - 'handler' => null, - 'params' => [] - ]; + ? ['code' => 200, 'handler' => $node[$method], 'params' => $params] + : ['code' => 405, 'handler' => null, 'params' => []]; } /**