/** * Cleans up requests for matching and execution * * @static * @access public */ public static function route() { // copy needed server variables, leave the environment alone self::$query_string = $_SERVER['QUERY_STRING']; self::$request_uri = $_SERVER['REQUEST_URI']; self::$request_method = $_SERVER['REQUEST_METHOD']; self::$script_name = $_SERVER['SCRIPT_NAME']; // remove query string components self::$request_uri = str_replace(self::$query_string, '', self::$request_uri); self::$request_uri = rtrim(self::$request_uri, '?'); // strip full script name off, if needed self::$request_uri = str_replace(self::$script_name, '', self::$request_uri); // finally, trim all /'s self::$request_uri = trim(self::$request_uri, '/'); self::$request_method = strtolower(self::$request_method); if (!($match = self::match())) { die("Match for URL pattern not found."); } // instantiate the matched controller, call the requested method $object = new $match(); $method = self::$request_method; if (!method_exists($object, $method)) { die("Required method does not exist."); } $object->{$method}(); }