Browse Source

Refactor the request class.

Taylor Otwell 13 years ago
parent
commit
3d684136b8
1 changed files with 23 additions and 12 deletions
  1. 23 12
      system/request.php

+ 23 - 12
system/request.php

@@ -27,6 +27,28 @@ class Request {
 	{
 	{
 		if ( ! is_null(static::$uri)) return static::$uri;
 		if ( ! is_null(static::$uri)) return static::$uri;
 
 
+		$uri = static::raw_uri();
+
+		if (strpos($uri, $base = parse_url(Config::get('application.url'), PHP_URL_PATH)) === 0)
+		{
+			$uri = substr($uri, strlen($base));
+		}
+
+		if (strpos($uri, $index = '/index.php') === 0)
+		{
+			$uri = substr($uri, strlen($index));
+		}
+
+		return static::$uri = (($uri = trim($uri, '/')) == '') ? '/' : $uri;
+	}
+
+	/**
+	 * Get the raw request URI from the $_SERVER array.
+	 *
+	 * @return string
+	 */
+	private static function raw_uri()
+	{
 		if (isset($_SERVER['PATH_INFO']))
 		if (isset($_SERVER['PATH_INFO']))
 		{
 		{
 			$uri = $_SERVER['PATH_INFO'];
 			$uri = $_SERVER['PATH_INFO'];
@@ -45,17 +67,7 @@ class Request {
 			throw new \Exception("Malformed request URI. Request terminated.");
 			throw new \Exception("Malformed request URI. Request terminated.");
 		}
 		}
 
 
-		if (strpos($uri, $base = parse_url(Config::get('application.url'), PHP_URL_PATH)) === 0)
-		{
-			$uri = substr($uri, strlen($base));
-		}
-
-		if (strpos($uri, $index = '/index.php') === 0)
-		{
-			$uri = substr($uri, strlen($index));
-		}
-
-		return static::$uri = (($uri = trim($uri, '/')) == '') ? '/' : $uri;
+		return $uri;
 	}
 	}
 
 
 	/**
 	/**
@@ -148,7 +160,6 @@ class Request {
 	 */
 	 */
 	public static function __callStatic($method, $parameters)
 	public static function __callStatic($method, $parameters)
 	{
 	{
-		// Dynamically determine if a given route is handling the request.
 		if (strpos($method, 'route_is_') === 0)
 		if (strpos($method, 'route_is_') === 0)
 		{
 		{
 			return static::route_is(substr($method, 9));
 			return static::route_is(substr($method, 9));