Example #1
0
 /**
  * Провека на совпадение адресной c справилом
  */
 private function parseURL()
 {
     $this->url = urldecode($this->url);
     foreach ($this->rules as $url => $param) {
         if (preg_match("#^{$url}\$#ui", $this->url, $match)) {
             array_shift($match);
             Request::$attr = $match;
             $this->action = $param;
             return $this->action = $param;
         }
     }
 }
Example #2
0
 /**
  * @param $route
  * @param $ways
  * @return array
  * @throws \Exception
  */
 public static function getWay($route, $ways)
 {
     foreach (array_keys($ways) as $way) {
         $regs = [];
         if (mb_ereg(self::createRegV($way), $route, $regs)) {
             if (count($regs) > 1) {
                 array_shift($regs);
                 self::$attr = $regs;
             } else {
                 self::$attr = array_intersect_key(explode('/', $route), self::$var_positions);
             }
             /**
              * Возвращаем название контроллера и метода в нем
              */
             self::$way = $ways[$way];
             if (count(self::$way) >= 2) {
                 if (!array_key_exists('method', self::$way)) {
                     self::$way['method'] = self::$way[1];
                 }
             }
             if (isset(self::$way['method']) && !self::checkMethod(self::$way['method'])) {
                 throw new \Exception('Методе передачи данных (GET, POST...) не соответствет указанному в файле роутинга.');
             }
             if (!array_key_exists('action', self::$way)) {
                 if (isset(self::$way[0])) {
                     self::$way['action'] = self::$way[0];
                 } else {
                     throw new \Exception('Ошибка синтаксиса в фале роутинга.');
                 }
             }
             /**
              * Возвращаем массив, ключи которого
              */
             Request::$attr = array_merge(self::$attr, Request::$attr);
             return self::$way;
         }
     }
     throw new \Exception(Lang::uage('error_no_route') . $route);
 }