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);
    }