routes = require($routerPath); } /* * return request string */ private function getURI(){ if(!empty($_SERVER['REQUEST_URI'])){ return trim($_SERVER['REQUEST_URI'], '/'); } } public function run(){ //получить строку запроса $uri = $this->getURI(); //проверить наличие запроса в routes.php foreach($this->routes as $uriPattern => $path){ //сравниваем $urlPattern и $url if(preg_match("~$uriPattern~", $uri)){ //получаем внутренний путь из внешнего согласно правилу $internalRoute = preg_replace("~$uriPattern~", $path, $uri); //определить контлоллер, экшен и параметры $segments = explode('/', $internalRoute); $controllerName = array_shift($segments).'Controller'; $controllerName = ucfirst($controllerName); $actionName = 'action'.ucfirst(array_shift($segments)); $parameters = $segments; //подключить файл класса контроллера $controllerFile = ROOT.'/controllers/'.$controllerName.'.php'; if(file_exists($controllerFile)){ include_once ($controllerFile); } $controllerObject = new $controllerName; if(!method_exists($controllerObject,$actionName)) { $er = $uri; require_once (ROOT . TMPL . 'error.php'); return true; }; $result = call_user_func_array(array($controllerObject, $actionName),$parameters); if($result != null){ break; } } } } }