Autarky\Routing\RoutePathGenerator::getRoutePath PHP Method

getRoutePath() public method

public getRoutePath ( Route $route, array $params )
$route Route
$params array
    public function getRoutePath(Route $route, array $params)
    {
        $routes = $this->routeParser->parse($route->getPattern());
        foreach ($routes as $route) {
            $path = '';
            $index = 0;
            foreach ($route as $part) {
                // Fixed segment in the route
                if (is_string($part)) {
                    $path .= $part;
                    continue;
                }
                // Placeholder in the route
                if ($index === count($params)) {
                    throw new \InvalidArgumentException('Too few parameters given');
                }
                if ($this->validateParams && $part[1] !== '[^/]+') {
                    if (!preg_match("/^{$part[1]}\$/", $params[$index])) {
                        throw new \InvalidArgumentException("Route parameter pattern mismatch: " . "Parameter #{$index} \"{$params[$index]}\" does not match pattern {$part[1]}");
                    }
                }
                $path .= $params[$index++];
            }
            // If number of params in route matches with number of params given, use that route.
            // Otherwise try to find a route that has more params
            if ($index === count($params)) {
                return $path;
            }
        }
        throw new \InvalidArgumentException('Too many parameters given');
    }