Request
class Request
Request represents an HTTP request.
The methods dealing with URL accept / return a raw path (% encoded): * getBasePath * getBaseUrl * getPathInfo * getRequestUri * getUri * getUriForPath
Constants
HEADER_FORWARDED |
|
HEADER_CLIENT_IP |
|
HEADER_CLIENT_HOST |
|
HEADER_CLIENT_PROTO |
|
HEADER_CLIENT_PORT |
|
METHOD_HEAD |
|
METHOD_GET |
|
METHOD_POST |
|
METHOD_PUT |
|
METHOD_PATCH |
|
METHOD_DELETE |
|
METHOD_PURGE |
|
METHOD_OPTIONS |
|
METHOD_TRACE |
|
METHOD_CONNECT |
|
Properties
ParameterBag | $attributes | Custom parameters. | |
ParameterBag | $request | Request body parameters ($_POST). | |
ParameterBag | $query | Query string parameters ($_GET). | |
ServerBag | $server | Server and execution environment parameters ($_SERVER). | |
FileBag | $files | Uploaded files ($_FILES). | |
ParameterBag | $cookies | Cookies ($_COOKIE). | |
HeaderBag | $headers | Headers (taken from the $_SERVER). |
Methods
Constructor.
Sets the parameters for this request.
Creates a new request with values from PHP's super globals.
Creates a Request based on a given URI and configuration.
Sets a callable able to create a Request instance.
Clones a request and overrides some of its parameters.
Clones the current request.
Returns the request as a string.
Overrides the PHP global variables according to this request instance.
Sets a list of trusted proxies.
Gets the list of trusted proxies.
Sets a list of trusted host patterns.
Gets the list of trusted host patterns.
Sets the name for trusted headers.
Gets the trusted proxy header name.
Normalizes a query string.
Enables support for the _method request parameter to determine the intended HTTP method.
Checks whether support for the _method request parameter is enabled.
Gets a "parameter" value from any bag.
Gets the Session.
Whether the request contains a Session which was started in one of the previous requests.
Whether the request contains a Session object.
Returns the client IP addresses.
Returns the client IP address.
Returns current script name.
Returns the path being requested relative to the executed script.
Returns the root path from which this request is executed.
Returns the root URL from which this request is executed.
Gets the request's scheme.
Returns the port on which the request is made.
Returns the user.
Returns the password.
Gets the user info.
Returns the HTTP host being requested.
Returns the requested URI (path and query string).
Gets the scheme and HTTP host.
Generates a normalized URI (URL) for the Request.
Generates a normalized URI for the given path.
Returns the path as relative reference from the current Request path.
Generates the normalized query string for the Request.
Checks whether the request is secure or not.
Returns the host name.
Sets the request method.
Gets the request "intended" method.
Gets the "real" request method.
Gets the mime type associated with the format.
Gets the format associated with the mime type.
Associates a format with mime types.
Gets the request format.
Sets the request format.
Gets the format associated with the request.
Sets the default locale.
Get the default locale.
Sets the locale.
Get the locale.
Checks if the request method is of specified type.
Checks whether the method is safe or not.
Returns the request body content.
Gets the Etags.
No description
Returns the preferred language.
Gets a list of languages acceptable by the client browser.
Gets a list of charsets acceptable by the client browser.
Gets a list of encodings acceptable by the client browser.
Gets a list of content types acceptable by the client browser.
Returns true if the request is a XMLHttpRequest.
Details
at line line 219
__construct(array $query = array(), array $request = array(), array $attributes = array(), array $cookies = array(), array $files = array(), array $server = array(), string|resource $content = null)
Constructor.
at line line 237
initialize(array $query = array(), array $request = array(), array $attributes = array(), array $cookies = array(), array $files = array(), array $server = array(), string|resource $content = null)
Sets the parameters for this request.
This method also re-initializes all properties.
at line line 265
static Request
createFromGlobals()
Creates a new request with values from PHP's super globals.
at line line 308
static Request
create(string $uri, string $method = 'GET', array $parameters = array(), array $cookies = array(), array $files = array(), array $server = array(), string $content = null)
Creates a Request based on a given URI and configuration.
The information contained in the URI always take precedence over the other information (server and parameters).
at line line 409
static
setFactory(callable|null $callable)
Sets a callable able to create a Request instance.
This is mainly useful when you need to override the Request class to keep BC with an existing system. It should not be used for any other purpose.
at line line 426
Request
duplicate(array $query = null, array $request = null, array $attributes = null, array $cookies = null, array $files = null, array $server = null)
Clones a request and overrides some of its parameters.
at line line 476
__clone()
Clones the current request.
Note that the session is not cloned as duplicated requests are most of the time sub-requests of the main one.
at line line 492
string
__toString()
Returns the request as a string.
at line line 512
overrideGlobals()
Overrides the PHP global variables according to this request instance.
It overrides $GET, $POST, $REQUEST, $SERVER, $COOKIE. $FILES is never overridden, see rfc1867
at line line 548
static
setTrustedProxies(array $proxies)
Sets a list of trusted proxies.
You should only list the reverse proxies that you manage directly.
at line line 558
static array
getTrustedProxies()
Gets the list of trusted proxies.
at line line 570
static
setTrustedHosts(array $hostPatterns)
Sets a list of trusted host patterns.
You should only list the hosts you manage using regexs.
at line line 584
static array
getTrustedHosts()
Gets the list of trusted host patterns.
at line line 606
static
setTrustedHeaderName(string $key, string $value)
Sets the name for trusted headers.
The following header keys are supported:
- Request::HEADERCLIENTIP: defaults to X-Forwarded-For (see getClientIp())
- Request::HEADERCLIENTHOST: defaults to X-Forwarded-Host (see getHost())
- Request::HEADERCLIENTPORT: defaults to X-Forwarded-Port (see getPort())
- Request::HEADERCLIENTPROTO: defaults to X-Forwarded-Proto (see getScheme() and isSecure())
Setting an empty value allows to disable the trusted header for the given key.
at line line 624
static string
getTrustedHeaderName(string $key)
Gets the trusted proxy header name.
at line line 643
static string
normalizeQueryString(string $qs)
Normalizes a query string.
It builds a normalized query string, where keys/value pairs are alphabetized, have consistent escaping and unneeded delimiters are removed.
at line line 687
static
enableHttpMethodParameterOverride()
Enables support for the _method request parameter to determine the intended HTTP method.
Be warned that enabling this feature might lead to CSRF issues in your code. Check that you are using CSRF tokens when required. If the HTTP method parameter override is enabled, an html-form with method "POST" can be altered and used to send a "PUT" or "DELETE" request via the _method request parameter. If these methods are not protected against CSRF, this presents a possible vulnerability.
The HTTP method can only be overridden when the real HTTP method is POST.
at line line 697
static bool
getHttpMethodParameterOverride()
Checks whether support for the _method request parameter is enabled.
at line line 716
mixed
get(string $key, mixed $default = null)
Gets a "parameter" value from any bag.
This method is mainly useful for libraries that want to provide some flexibility. If you don't need the flexibility in controllers, it is better to explicitly get request parameters from the appropriate public property instead (attributes, query, request).
Order of precedence: PATH (routing placeholders or custom attributes), GET, BODY
at line line 738
SessionInterface|null
getSession()
Gets the Session.
at line line 749
bool
hasPreviousSession()
Whether the request contains a Session which was started in one of the previous requests.
at line line 764
bool
hasSession()
Whether the request contains a Session object.
This method does not give any information about the state of the session object, like whether the session is started or not. It is just a way to check if this Request is associated with a Session instance.
at line line 774
setSession(SessionInterface $session)
Sets the Session.
at line line 792
array
getClientIps()
Returns the client IP addresses.
In the returned array the most trusted IP address is first, and the least trusted one last. The "real" client IP address is the last one, but this is also the least trusted one. Trusted proxies are stripped.
Use this method carefully; you should use getClientIp() instead.
at line line 845
string
getClientIp()
Returns the client IP address.
This method can read the client IP address from the "X-Forwarded-For" header when trusted proxies were set via "setTrustedProxies()". The "X-Forwarded-For" header value is a comma+space separated list of IP addresses, the left-most being the original client, and each successive proxy that passed the request adding the IP address where it received the request from.
If your reverse proxy uses a different header name than "X-Forwarded-For", ("Client-Ip" for instance), configure it via "setTrustedHeaderName()" with the "client-ip" key.
at line line 857
string
getScriptName()
Returns current script name.
at line line 876
string
getPathInfo()
Returns the path being requested relative to the executed script.
The path info always starts with a /.
Suppose this request is instantiated from /mysite on localhost:
- http://localhost/mysite returns an empty string
- http://localhost/mysite/about returns '/about'
- http://localhost/mysite/enco%20ded returns '/enco%20ded'
- http://localhost/mysite/about?var=1 returns '/about'
at line line 897
string
getBasePath()
Returns the root path from which this request is executed.
Suppose that an index.php file instantiates this request object:
- http://localhost/index.php returns an empty string
- http://localhost/index.php/page returns an empty string
- http://localhost/web/index.php returns '/web'
- http://localhost/we%20b/index.php returns '/we%20b'
at line line 916
string
getBaseUrl()
Returns the root URL from which this request is executed.
The base URL never ends with a /.
This is similar to getBasePath(), except that it also includes the script filename (e.g. index.php) if one exists.
at line line 930
string
getScheme()
Gets the request's scheme.
at line line 948
string
getPort()
Returns the port on which the request is made.
This method can read the client port from the "X-Forwarded-Port" header when trusted proxies were set via "setTrustedProxies()".
The "X-Forwarded-Port" header must contain the client port.
If your reverse proxy uses a different header name than "X-Forwarded-Port", configure it via "setTrustedHeaderName()" with the "client-port" key.
at line line 982
string|null
getUser()
Returns the user.
at line line 992
string|null
getPassword()
Returns the password.
at line line 1002
string
getUserInfo()
Gets the user info.
at line line 1021
string
getHttpHost()
Returns the HTTP host being requested.
The port name will be appended to the host if it's non-standard.
at line line 1038
string
getRequestUri()
Returns the requested URI (path and query string).
at line line 1055
string
getSchemeAndHttpHost()
Gets the scheme and HTTP host.
If the URL was called with basic authentication, the user and the password are not added to the generated string.
at line line 1067
string
getUri()
Generates a normalized URI (URL) for the Request.
at line line 1083
string
getUriForPath(string $path)
Generates a normalized URI for the given path.
at line line 1107
string
getRelativeUriForPath(string $path)
Returns the path as relative reference from the current Request path.
Only the URIs path component (no schema, host etc.) is relevant and must be given. Both paths must be absolute and not contain relative parts. Relative URLs from one resource to another are useful when generating self-contained downloadable document archives. Furthermore, they can be used to reduce the link size in documents.
Example target paths, given a base path of "/a/b/c/d": - "/a/b/c/d" -> "" - "/a/b/c/" -> "./" - "/a/b/" -> "../" - "/a/b/c/other" -> "other" - "/a/x/y" -> "../../x/y"
at line line 1151
string|null
getQueryString()
Generates the normalized query string for the Request.
It builds a normalized query string, where keys/value pairs are alphabetized and have consistent escaping.
at line line 1172
bool
isSecure()
Checks whether the request is secure or not.
This method can read the client protocol from the "X-Forwarded-Proto" header when trusted proxies were set via "setTrustedProxies()".
The "X-Forwarded-Proto" header must contain the protocol: "https" or "http".
If your reverse proxy uses a different header name than "X-Forwarded-Proto" ("SSL_HTTPS" for instance), configure it via "setTrustedHeaderName()" with the "client-proto" key.
at line line 1198
string
getHost()
Returns the host name.
This method can read the client host name from the "X-Forwarded-Host" header when trusted proxies were set via "setTrustedProxies()".
The "X-Forwarded-Host" header must contain the client host name.
If your reverse proxy uses a different header name than "X-Forwarded-Host", configure it via "setTrustedHeaderName()" with the "client-host" key.
at line line 1247
setMethod(string $method)
Sets the request method.
at line line 1268
string
getMethod()
Gets the request "intended" method.
If the X-HTTP-Method-Override header is set, and if the method is a POST, then it is used to determine the "real" intended HTTP method.
The _method request parameter can also be used to determine the HTTP method, but only if enableHttpMethodParameterOverride() has been called.
The method is always an uppercased string.
at line line 1292
string
getRealMethod()
Gets the "real" request method.
at line line 1304
string
getMimeType(string $format)
Gets the mime type associated with the format.
at line line 1320
string|null
getFormat(string $mimeType)
Gets the format associated with the mime type.
at line line 1343
setFormat(string $format, string|array $mimeTypes)
Associates a format with mime types.
at line line 1365
string
getRequestFormat(string $default = 'html')
Gets the request format.
Here is the process to determine the format:
- format defined by the user (with setRequestFormat())
- _format request parameter
- $default
at line line 1379
setRequestFormat(string $format)
Sets the request format.
at line line 1389
string|null
getContentType()
Gets the format associated with the request.
at line line 1399
setDefaultLocale(string $locale)
Sets the default locale.
at line line 1413
string
getDefaultLocale()
Get the default locale.
at line line 1423
setLocale(string $locale)
Sets the locale.
at line line 1433
string
getLocale()
Get the locale.
at line line 1445
bool
isMethod(string $method)
Checks if the request method is of specified type.
at line line 1455
bool
isMethodSafe()
Checks whether the method is safe or not.
at line line 1469
string|resource
getContent(bool $asResource = false)
Returns the request body content.
at line line 1515
array
getETags()
Gets the Etags.
at line line 1523
bool
isNoCache()
at line line 1535
string|null
getPreferredLanguage(array $locales = null)
Returns the preferred language.
at line line 1568
array
getLanguages()
Gets a list of languages acceptable by the client browser.
at line line 1608
array
getCharsets()
Gets a list of charsets acceptable by the client browser.
at line line 1622
array
getEncodings()
Gets a list of encodings acceptable by the client browser.
at line line 1636
array
getAcceptableContentTypes()
Gets a list of content types acceptable by the client browser.
at line line 1655
bool
isXmlHttpRequest()
Returns true if the request is a XMLHttpRequest.
It works if your JavaScript library sets an X-Requested-With HTTP header. It is known to work with common JavaScript frameworks: