[RequestHandler] added Request::createFromUri()

This commit is contained in:
Fabien Potencier 2010-04-06 17:44:52 +02:00
parent 1816b8543e
commit 85e5496d9d

View File

@ -92,6 +92,57 @@ class Request implements RequestInterface
$this->format = null;
}
/**
* Creates a Request based on a given URI and configuration.
*
* @param string $uri The URI
* @param string $method The HTTP method
* @param array $parameters The request (GET) or query (POST) parameters
* @param array $cookies The request cookies ($_COOKIE)
* @param array $files The request files ($_FILES)
* @param array $server The server parameters ($_SERVER)
*
*/
static public function createFromUri($uri, $method = 'get', $parameters = array(), $cookies = array(), $files = array(), $server = array())
{
if (in_array($method, array('post', 'put', 'delete')))
{
$request = $parameters;
$query = array();
}
else
{
$request = array();
$query = $parameters;
}
$queryString = false !== ($pos = strpos($uri, '?')) ? html_entity_decode(substr($uri, $pos + 1)) : '';
parse_str($queryString, $qs);
if (is_array($qs))
{
$query = array_replace($qs, $query);
}
$server = array_replace(array(
'HTTP_HOST' => 'localhost',
'SERVER_NAME' => 'localhost',
'SERVER_PORT' => 80,
'HTTP_USER_AGENT' => 'SymfonyClient/1.0',
'HTTP_ACCEPT' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'HTTP_ACCEPT_LANGUAGE' => 'en-us,en;q=0.5',
'HTTP_ACCEPT_CHARSET' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
'REMOTE_ADDR' => '127.0.0.1',
'REQUEST_METHOD' => strtoupper($method),
'PATH_INFO' => '',
'REQUEST_URI' => $uri,
'SCRIPT_NAME' => '',
'SCRIPT_FILENAME' => '',
'QUERY_STRING' => $queryString,
), $server);
return new self($request, $query, array(), $cookies, $files, $server);
}
/**
* Clones a request and overrides some of its parameters.
*