/** * @param \Rapid\Request $request * * @return bool */ public function pass(\Rapid\Request $request) { $rule = $this->prepareRuleForRegExp(); if (!preg_match($rule, $request->path(), $matches)) { return false; } $this->fillInValues($matches); $this->setRequestValues($request); return true; }
protected function processPath() { $path = $this->request->path(); $parts = explode('/', $path); $partsCount = count($parts); $partsMaxIndex = $partsCount - 1; $module = ''; $controller = ''; $action = ''; $paramsKey = ''; foreach ($parts as $key => $part) { if (!$controller && $this->application->hasModule($module . $part . '/')) { $module .= $part . '/'; continue; } if (!$controller) { $controller = $part; continue; } if (!$action) { $action = $part; continue; } if ($partsMaxIndex > $key && !$paramsKey) { $paramsKey = $part; continue; } if ($paramsKey) { $this->request->setParam($paramsKey, $part); $paramsKey = ''; } else { $this->request->setParam($part, 1); } } $this->request->setModule($module)->setController($controller ? $controller : $this->defaultController)->setAction($action ? $action : $this->defaultAction); }