/** * Process request path with route pattern, retrieve parameters * * @param Request $request Source request * @param Route $route Route to be processed * * @return boolean */ protected function process($request, $route) { $path = $route->getPath(); if (preg_match($path->getRegExp(), $request->getPath())) { foreach ($path->getSegments() as $segment) { $values = array(); if (preg_match($segment->getRegExp(), $request->getPath(), $values)) { unset($values[0]); $values = array_values($values); $names = array_keys($segment->getParams()); $params = !empty($names) && count($names) == count($values) ? array_combine($names, $values) : array(); $params = $this->processParams($route, $params); $request->setParams($params); return true; } } } return false; }