public static function parse() { self::sortRouteTable(); $arr = explode("?", $_SERVER["REQUEST_URI"]); $name = $arr[0]; $params = array(); if (isset($arr[1]) && $arr[1]) { $params = explode("&", $arr[1]); } $newParams = array(); foreach ($params as $key => $value) { $ps = explode("=", $value); $newParams[$ps[0]] = $ps[1]; } $arrParams = array(); foreach($newParams as $k => $v) { array_push($arrParams, $k); } $newParamsPost = array(); if($_SERVER['REQUEST_METHOD'] == 'POST') { $newParamsPost = $_POST; } $req = new Request(); $req->setGetParameters($newParams); $req->setPostParameters($newParamsPost); $controllerName = null; $actionName = null; foreach(self::$routeTable as $k => $v) { if($v[0] == $name) { $paramName = array_intersect($v[3], $arrParams); if(count($paramName) == count($arrParams)) { $controllerName = $v[1]; $actionName = $v[2]; } } } if($actionName == null && $controllerName == null) { echo 'Unknown page'; die; } $controllerName = ucfirst($controllerName.'Controller'); $class = new $controllerName(); return $class->{$actionName.'Action'}($req); }