/** * Match request against given route * * @param \Janeiro\Request\AbstractRequest $request * @param array &$route * @throws \Janeiro\Mvc\Exception * @return int|bool */ private function match(AbstractRequest $request, &$route) { $match = false; $pattern = str_replace('/', '\\/', trim($route['pattern'], '/')); $pattern = str_replace(array_keys(self::$expressions), array_values(self::$expressions), $pattern); if (preg_match('/^' . $pattern . '$/', implode('/', $request->get()), $matches)) { if (false === empty($route['parameters']['deny'])) { throw new Exception('access denied'); } $match = $this->rate($route['parameters'], $matches); } return $match; }