/** * Провека на совпадение адресной 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; } } }
/** * @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); }