예제 #1
0
파일: Route.php 프로젝트: creogen/rapidphp
 /**
  * @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;
 }
예제 #2
0
파일: Router.php 프로젝트: creogen/rapidphp
 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);
 }