[RequestHandler] added Request::createFromUri()
This commit is contained in:
parent
1816b8543e
commit
85e5496d9d
@ -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.
|
||||
*
|
||||
|
Reference in New Issue
Block a user