A class that helps wrap Request information and particulars about a single request. Provides methods commonly used to introspect on the request headers and request body.
array<string, bool>Instance cache for results of is(something) calls
array<callable|array>The built in detectors used with is() can be modified with addDetector().
array<string, mixed>Array of environment data.
array<string, mixed>Store the additional attributes attached to the request.
stringBase URL path.
array<string, mixed>Array of cookie data.
object|array|nullArray of POST data. Will contain form data as well as uploaded files. In PUT/PATCH/DELETE requests this property will contain the form-urlencoded data.
array<string>A list of properties that emulated by the PSR7 attribute methods.
Cake\Http\FlashMessageInstance of a FlashMessage object relative to this request
arrayArray of parameters parsed from the URL.
string|nullThe HTTP protocol version used.
arrayArray of query string arguments
string|nullThe request target if overridden
Cake\Http\SessionInstance of a Session object relative to this request
Psr\Http\Message\StreamInterfaceRequest body stream. Contains php://input unless input constructor option is used.
boolWhether to trust HTTP_X headers set by most load balancers. Only set to true if your application runs behind load balancers/proxies that you control.
array<string>Trusted proxies list
arrayArray of Psr\Http\Message\UploadedFileInterface objects.
Psr\Http\Message\UriInterfaceUri instance
stringwebroot path segment for the request.
Missing method handler, handles wrapping older style isAjax() type methods
Create a new request object.
Detects if a specific accept header is present.
Detects if a specific environment variable is present.
Detects if a specific header is present.
Worker for the public is() function
Detects if a specific request parameter is present.
Process the config/settings data into properties.
Get the languages accepted by the client, or check if a specific language is accepted.
Find out which content types the client accepts or check if they accept a particular type of content.
Add a new detector to the list of detectors that a request can use. There are several different types of detectors that can be set.
Allow only certain HTTP request methods, if the request method does not match a 405 error will be shown and the required "Allow" response header will be set.
Clears the instance detector cache, used by the is() function
Get the IP the client is using, or says they are using.
Get the content type used in this request.
Get the domain name and include $tldLength segments of the tld.
Read an attribute from the request, or get the default
Get all the attributes in the request.
Gets the body of the message.
Read cookie data from the request's cookie data.
Get a cookie collection based on the request's cookies
Get all the cookie data from the request.
Provides a safe accessor for request data. Allows you to use Hash::get() compatible paths.
Get a value from the request's environment data. Fallback to using env() if the key is not set in the $environment property.
Returns the instance of the FlashMessage object for this request
Get a single header from the request.
Get a single header as a string from the request.
Get all headers in the request.
Get the HTTP method used for this request. There are a few ways to specify a method.
Safely access the values in $this->params.
Get the parsed request body data.
Get the path of current request.
Retrieves the HTTP protocol version as a string.
Read a specific query value or dotted path.
Get all the query parameters in accordance to the PSR-7 specifications. To read specific query values use the alternative getQuery() method.
Retrieves the request's target.
Get all the server environment parameters.
Returns the instance of the Session object for this request
Get trusted proxies
Get the uploaded file from a dotted path.
Get the array of uploaded files from the request.
Retrieves the URI instance.
Check if a header is set in the request.
Get the host that the request was handled on.
Read data from php://input. Useful when interacting with XML or JSON request body content.
Check whether a Request is a certain type.
Check that a request matches all the given types.
Normalize a header name into the SERVER version.
Parse the HTTP_ACCEPT header and return a sorted array with content types as the keys, and pref values as the values.
Get the port the request was handled on.
Set environment vars based on url option to facilitate UriInterface instance generation.
Returns the referer that referred this request.
Get the current url scheme used for the request.
register trusted proxies
Get the subdomains for a host.
Recursively validate uploaded file data.
Get a modified request with the provided header.
Return an instance with the specified request attribute.
Return an instance with the specified message body.
Replace the cookies in the request with those contained in the provided CookieCollection.
Replace the cookies and get a new request instance.
Update the request with a new request data element.
Update the request with a new environment data element.
Get a modified request with the provided header.
Update the request method and get a new instance.
Update the request with a new routing parameter
Update the parsed body and get a new instance.
Return an instance with the specified HTTP protocol version.
Update the query string data and get a new instance.
Create a new instance with a specific request-target.
Update the request replacing the files, and creating a new instance.
Return an instance with the specified uri
Return an instance without the specified request attribute.
Update the request removing a data element.
Get a modified request without a provided header.
__call(string $name, array $params): bool
Missing method handler, handles wrapping older style isAjax() type methods
string $name The method called
array $params Array of parameters for the method call
boolBadMethodCallException__construct(array<string, mixed> $config = [])
Create a new request object.
You can supply the data as either an array or as a string. If you use a string you can only supply the URL for the request. Using an array will let you provide the following keys:
post POST data or non query string dataquery Additional data from the query string.files Uploaded files in a normalized structure, with each leaf an instance of UploadedFileInterface.cookies Cookies for this request.environment $_SERVER and $_ENV data.url The URL without the base path for the request.uri The PSR7 UriInterface object. If null, one will be created from url or environment.base The base URL for the request.webroot The webroot directory for the request.input The data that would come from php://input this is useful for simulating requests with put, patch or delete data.session An instance of a Session objectarray<string, mixed> $config optional An array of request data to create a request with.
_acceptHeaderDetector(array $detect): bool
Detects if a specific accept header is present.
array $detect Detector options array.
bool_environmentDetector(array $detect): bool
Detects if a specific environment variable is present.
array $detect Detector options array.
bool_headerDetector(array $detect): bool
Detects if a specific header is present.
array $detect Detector options array.
bool_is(string $type, array $args): bool
Worker for the public is() function
string $type The type of request you want to check.
array $args Array of custom detector arguments.
bool_paramDetector(array $detect): bool
Detects if a specific request parameter is present.
array $detect Detector options array.
bool_setConfig(array<string, mixed> $config): void
Process the config/settings data into properties.
array<string, mixed> $config The config data to use.
voidacceptLanguage(string|null $language = null): array|bool
Get the languages accepted by the client, or check if a specific language is accepted.
Get the list of accepted languages:
$request->acceptLanguage();
Check if a specific language is accepted:
$request->acceptLanguage('es-es');
string|null $language optional The language to test.
array|boolaccepts(string|null $type = null): array<string>|bool
Find out which content types the client accepts or check if they accept a particular type of content.
$this->request->accepts();
$this->request->accepts('application/json'); This method will order the returned content types by the preference values indicated by the client.
string|null $type optional The content type to check for. Leave null to get all types a client accepts.
array<string>|booladdDetector(string $name, callable|array $detector): void
Add a new detector to the list of detectors that a request can use. There are several different types of detectors that can be set.
Callback detectors allow you to provide a callable to handle the check. The callback will receive the request object as its only parameter.
addDetector('custom', function ($request) { //Return a boolean }); An environment value comparison, compares a value fetched from env() to a known value the environment value is equality checked against the provided value.
addDetector('post', ['env' => 'REQUEST_METHOD', 'value' => 'POST']); Allows for custom detectors on the request parameters.
addDetector('admin', ['param' => 'prefix', 'value' => 'admin']); Allows for detector to compare against Accept header value.
addDetector('csv', ['accept' => 'text/csv']); Allows for one or more headers to be compared.
addDetector('fancy', ['header' => ['X-Fancy' => 1]); The param, env and comparison types allow the following value comparison options:
Pattern value comparison allows you to compare a value fetched from env() to a regular expression.
addDetector('iphone', ['env' => 'HTTP_USER_AGENT', 'pattern' => '/iPhone/i']); Option based comparisons use a list of options to create a regular expression. Subsequent calls to add an already defined options detector will merge the options.
addDetector('mobile', ['env' => 'HTTP_USER_AGENT', 'options' => ['Fennec']]); You can also make compare against multiple values using the options key. This is useful when you want to check if a request value is in a list of options.
addDetector('extension', ['param' => '_ext', 'options' => ['pdf', 'csv']]
string $name The name of the detector.
callable|array $detector A callable or options array for the detector definition.
voidallowMethod(array<string>|string $methods): true
Allow only certain HTTP request methods, if the request method does not match a 405 error will be shown and the required "Allow" response header will be set.
Example:
$this->request->allowMethod('post'); or $this->request->allowMethod(['post', 'delete']);
If the request would be GET, response header "Allow: POST, DELETE" will be set and a 405 error will be returned.
array<string>|string $methods Allowed HTTP request methods.
trueCake\Http\Exception\MethodNotAllowedExceptionclearDetectorCache(): void
Clears the instance detector cache, used by the is() function
voidclientIp(): string
Get the IP the client is using, or says they are using.
stringcontentType(): string|null
Get the content type used in this request.
string|nulldomain(int $tldLength = 1): string
Get the domain name and include $tldLength segments of the tld.
int $tldLength optional Number of segments your tld contains. For example: example.com contains 1 tld. While example.co.uk contains 2.
stringgetAttribute(string $name, mixed $default = null): mixed
Read an attribute from the request, or get the default
Retrieves a single derived request attribute as described in getAttributes(). If the attribute has not been previously set, returns the default value as provided.
This method obviates the need for a hasAttribute() method, as it allows specifying a default value to return if the attribute is not found.
string $name The attribute name.
mixed $default optional The default value if the attribute has not been set.
mixedgetAttributes(): array<string, mixed>
Get all the attributes in the request.
This will include the params, webroot, base, and here attributes that CakePHP provides.
array<string, mixed>getBody(): Psr\Http\Message\StreamInterface
Gets the body of the message.
Psr\Http\Message\StreamInterfacegetCookie(string $key, array|string|null $default = null): array|string|null
Read cookie data from the request's cookie data.
string $key The key or dotted path you want to read.
array|string|null $default optional The default value if the cookie is not set.
array|string|nullgetCookieCollection(): Cake\Http\Cookie\CookieCollection
Get a cookie collection based on the request's cookies
The CookieCollection lets you interact with request cookies using \Cake\Http\Cookie\Cookie objects and can make converting request cookies into response cookies easier.
This method will create a new cookie collection each time it is called. This is an optimization that allows fewer objects to be allocated until the more complex CookieCollection is needed. In general you should prefer getCookie() and getCookieParams() over this method. Using a CookieCollection is ideal if your cookies contain complex JSON encoded data.
Cake\Http\Cookie\CookieCollectiongetCookieParams(): array<string, mixed>
Get all the cookie data from the request.
Retrieves cookies sent by the client to the server.
The data MUST be compatible with the structure of the $_COOKIE superglobal.
array<string, mixed>getData(string|null $name = null, mixed $default = null): mixed
Provides a safe accessor for request data. Allows you to use Hash::get() compatible paths.
// get all data
$request->getData();
// Read a specific field.
$request->getData('Post.title');
// With a default value.
$request->getData('Post.not there', 'default value'); When reading values you will get null for keys/values that do not exist.
Developers are encouraged to use getParsedBody() if they need the whole data array, as it is PSR-7 compliant, and this method is not. Using Hash::get() you can also get single params.
$value = Hash::get($request->getParsedBody(), 'Post.id');
string|null $name optional Dot separated name of the value to read. Or null to read all data.
mixed $default optional The default data.
mixedgetEnv(string $key, string|null $default = null): string|null
Get a value from the request's environment data. Fallback to using env() if the key is not set in the $environment property.
string $key The key you want to read from.
string|null $default optional Default value when trying to retrieve an environment variable's value that does not exist.
string|nullgetFlash(): Cake\Http\FlashMessage
Returns the instance of the FlashMessage object for this request
Cake\Http\FlashMessagegetHeader(string $name): array<string>
Get a single header from the request.
Return the header value as an array. If the header is not present an empty array will be returned.
string $name The header you want to get (case-insensitive)
array<string>getHeaderLine(string $name): string
Get a single header as a string from the request.
This method returns all of the header values of the given case-insensitive header name as a string concatenated together using a comma.
NOTE: Not all header values may be appropriately represented using comma concatenation. For such headers, use getHeader() instead and supply your own delimiter when concatenating.
If the header does not appear in the message, this method MUST return an empty string.
string $name The header you want to get (case-insensitive)
stringgetHeaders(): array<string[]>
Get all headers in the request.
Returns an associative array where the header names are the keys and the values are a list of header values.
While header names are not case-sensitive, getHeaders() will normalize the headers.
array<string[]>getMethod(): string
Get the HTTP method used for this request. There are a few ways to specify a method.
_method
Any of these 3 approaches can be used to set the HTTP method used by CakePHP internally, and will effect the result of this method.
stringgetParam(string $name, mixed $default = null): mixed
Safely access the values in $this->params.
string $name The name or dotted path to parameter.
mixed $default optional The default value if $name is not set. Default null.
mixedgetParsedBody(): object|array|null
Get the parsed request body data.
If the request Content-Type is either application/x-www-form-urlencoded or multipart/form-data, and the request method is POST, this will be the post data. For other content types, it may be the deserialized request body.
object|array|nullgetPath(): string
Get the path of current request.
stringgetProtocolVersion(): string
Retrieves the HTTP protocol version as a string.
The string MUST contain only the HTTP version number (e.g., "1.1", "1.0").
stringgetQuery(string|null $name = null, mixed $default = null): array|string|null
Read a specific query value or dotted path.
Developers are encouraged to use getQueryParams() if they need the whole query array, as it is PSR-7 compliant, and this method is not. Using Hash::get() you can also get single params.
$value = Hash::get($request->getQueryParams(), 'Post.id');
string|null $name optional The name or dotted path to the query param or null to read all.
mixed $default optional The default value if the named parameter is not set, and $name is not null.
array|string|nullgetQueryParams(): array
Get all the query parameters in accordance to the PSR-7 specifications. To read specific query values use the alternative getQuery() method.
Retrieves the deserialized query string arguments, if any.
Note: the query params might not be in sync with the URI or server params. If you need to ensure you are only getting the original values, you may need to parse the query string from getUri()->getQuery() or from the QUERY_STRING server param.
arraygetRequestTarget(): string
Retrieves the request's target.
Retrieves the message's request-target either as it was requested, or as set with withRequestTarget(). By default this will return the application relative path without base directory, and the query string defined in the SERVER environment.
stringgetServerParams(): array
Get all the server environment parameters.
Read all of the 'environment' or 'server' data that was used to create this request.
arraygetSession(): Cake\Http\Session
Returns the instance of the Session object for this request
Cake\Http\SessiongetTrustedProxies(): array<string>
Get trusted proxies
array<string>getUploadedFile(string $path): Psr\Http\Message\UploadedFileInterface|null
Get the uploaded file from a dotted path.
string $path The dot separated path to the file you want.
Psr\Http\Message\UploadedFileInterface|nullgetUploadedFiles(): array
Get the array of uploaded files from the request.
This method returns upload metadata in a normalized tree, with each leaf an instance of Psr\Http\Message\UploadedFileInterface.
These values MAY be prepared from $_FILES or the message body during instantiation, or MAY be injected via withUploadedFiles().
arraygetUri(): Psr\Http\Message\UriInterface
Retrieves the URI instance.
This method MUST return a UriInterface instance.
Psr\Http\Message\UriInterfacehasHeader(string $name): bool
Check if a header is set in the request.
string $name The header you want to get (case-insensitive)
boolhost(): string|null
Get the host that the request was handled on.
string|nullinput(callable|null $callback = null, mixed ...$args): mixed
Read data from php://input. Useful when interacting with XML or JSON request body content.
Getting input with a decoding function:
$this->request->input('json_decode'); Getting input using a decoding function, and additional params:
$this->request->input('Xml::build', ['return' => 'DOMDocument']); Any additional parameters are applied to the callback in the order they are given.
callable|null $callback optional A decoding callback that will convert the string data to another representation. Leave empty to access the raw input data. You can also supply additional parameters for the decoding callback using var args, see above.
mixed ...$args The additional arguments
mixedis(array<string>|string $type, mixed ...$args): bool
Check whether a Request is a certain type.
Uses the built-in detection rules as well as additional rules defined with {@link \Cake\Http\ServerRequest::addDetector()}. Any detector can be called as is($type) or is$Type().
array<string>|string $type The type of request you want to check. If an array this method will return true if the request matches any type.
mixed ...$args List of arguments
boolisAll(array<string> $types): bool
Check that a request matches all the given types.
Allows you to test multiple types and union the results. See Request::is() for how to add additional types and the built-in types.
array<string> $types The types to check.
boolnormalizeHeaderName(string $name): string
Normalize a header name into the SERVER version.
string $name The header name.
stringparseAccept(): array
Parse the HTTP_ACCEPT header and return a sorted array with content types as the keys, and pref values as the values.
Generally you want to use {@link \Cake\Http\ServerRequest::accepts()} to get a simple list of the accepted content types.
arrayport(): string|null
Get the port the request was handled on.
string|nullprocessUrlOption(array<string, mixed> $config): array<string, mixed>
Set environment vars based on url option to facilitate UriInterface instance generation.
query option is also updated based on URL's querystring.
array<string, mixed> $config Config array.
array<string, mixed>referer(bool $local = true): string|null
Returns the referer that referred this request.
bool $local optional Attempt to return a local address. Local addresses do not contain hostnames.
string|nullscheme(): string|null
Get the current url scheme used for the request.
e.g. 'http', or 'https'
string|nullsetTrustedProxies(array<string> $proxies): void
register trusted proxies
array<string> $proxies ips list of trusted proxies
voidsubdomains(int $tldLength = 1): array<string>
Get the subdomains for a host.
int $tldLength optional Number of segments your tld contains. For example: example.com contains 1 tld. While example.co.uk contains 2.
array<string>validateUploadedFiles(array $uploadedFiles, string $path): void
Recursively validate uploaded file data.
array $uploadedFiles The new files array to validate.
string $path The path thus far.
voidInvalidArgumentExceptionwithAddedHeader(string $name, string|string[] $value): static
Get a modified request with the provided header.
Existing header values will be retained. The provided value will be appended into the existing values.
string $name The header name.
string|string[] $value The header value
staticwithAttribute(string $name, mixed $value): static
Return an instance with the specified request attribute.
This method allows setting a single derived request attribute as described in getAttributes().
This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that has the updated attribute.
string $name The attribute name.
mixed $value The value of the attribute.
staticwithBody(StreamInterface $body): static
Return an instance with the specified message body.
The body MUST be a StreamInterface object.
This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return a new instance that has the new body stream.
StreamInterface $body The new request body
staticwithCookieCollection(Cake\Http\Cookie\CookieCollection $cookies): static
Replace the cookies in the request with those contained in the provided CookieCollection.
Cake\Http\Cookie\CookieCollection $cookies The cookie collection
staticwithCookieParams(array $cookies): static
Replace the cookies and get a new request instance.
The data IS NOT REQUIRED to come from the $_COOKIE superglobal, but MUST be compatible with the structure of $_COOKIE. Typically, this data will be injected at instantiation.
This method MUST NOT update the related Cookie header of the request instance, nor related values in the server params.
This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that has the updated cookie values.
array $cookies The new cookie data to use.
staticwithData(string $name, mixed $value): static
Update the request with a new request data element.
Returns an updated request object. This method returns a new request object and does not mutate the request in-place.
Use withParsedBody() if you need to replace the all request data.
string $name The dot separated path to insert $value at.
mixed $value The value to insert into the request data.
staticwithEnv(string $key, string $value): static
Update the request with a new environment data element.
Returns an updated request object. This method returns a new request object and does not mutate the request in-place.
string $key The key you want to write to.
string $value Value to set
staticwithHeader(string $name, string|string[] $value): static
Get a modified request with the provided header.
While header names are case-insensitive, the casing of the header will be preserved by this function, and returned from getHeaders().
This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that has the new and/or updated header and value.
string $name The header name.
string|string[] $value The header value
staticwithMethod(string $method): static
Update the request method and get a new instance.
While HTTP method names are typically all uppercase characters, HTTP method names are case-sensitive and thus implementations SHOULD NOT modify the given string.
This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that has the changed request method.
string $method The HTTP method to use.
staticwithParam(string $name, mixed $value): static
Update the request with a new routing parameter
Returns an updated request object. This method returns a new request object and does not mutate the request in-place.
string $name The dot separated path to insert $value at.
mixed $value The value to insert into the the request parameters.
staticwithParsedBody(null|array|object $data): static
Update the parsed body and get a new instance.
These MAY be injected during instantiation.
If the request Content-Type is either application/x-www-form-urlencoded or multipart/form-data, and the request method is POST, use this method ONLY to inject the contents of $_POST.
The data IS NOT REQUIRED to come from $_POST, but MUST be the results of deserializing the request body content. Deserialization/parsing returns structured data, and, as such, this method ONLY accepts arrays or objects, or a null value if nothing was available to parse.
As an example, if content negotiation determines that the request data is a JSON payload, this method could be used to create a request instance with the deserialized parameters.
This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that has the updated body parameters.
null|array|object $data The deserialized body data. This will typically be in an array or object.
staticwithProtocolVersion(string $version): static
Return an instance with the specified HTTP protocol version.
The version string MUST contain only the HTTP version number (e.g., "1.1", "1.0").
string $version HTTP protocol version
staticwithQueryParams(array $query): static
Update the query string data and get a new instance.
These values SHOULD remain immutable over the course of the incoming request. They MAY be injected during instantiation, such as from PHP's $_GET superglobal, or MAY be derived from some other value such as the URI. In cases where the arguments are parsed from the URI, the data MUST be compatible with what PHP's parse_str() would return for purposes of how duplicate query parameters are handled, and how nested sets are handled.
Setting query string arguments MUST NOT change the URI stored by the request, nor the values in the server params.
This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that has the updated query string arguments.
array $query The query string data to use
staticwithRequestTarget(mixed $requestTarget): static
Create a new instance with a specific request-target.
You can use this method to overwrite the request target that is inferred from the request's Uri. This also lets you change the request target's form to an absolute-form, authority-form or asterisk-form
mixed $requestTarget The request target.
staticwithUploadedFiles(array $uploadedFiles): static
Update the request replacing the files, and creating a new instance.
This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that has the updated body parameters.
array $uploadedFiles An array of uploaded file objects.
staticInvalidArgumentExceptionwithUri(UriInterface $uri, bool $preserveHost = false): static
Return an instance with the specified uri
Warning Replacing the Uri will not update the base, webroot, and url attributes.
UriInterface $uri The new request uri
bool $preserveHost optional Whether the host should be retained.
staticwithoutAttribute(string $name): static
Return an instance without the specified request attribute.
This method allows removing a single derived request attribute as described in getAttributes().
This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that removes the attribute.
string $name The attribute name.
staticInvalidArgumentExceptionwithoutData(string $name): static
Update the request removing a data element.
Returns an updated request object. This method returns a new request object and does not mutate the request in-place.
string $name The dot separated path to remove.
staticwithoutHeader(string $name): static
Get a modified request without a provided header.
Header resolution MUST be done without case-sensitivity.
This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that removes the named header.
string $name The header name to remove.
staticInstance cache for results of is(something) calls
array<string, bool>The built in detectors used with is() can be modified with addDetector().
There are several ways to specify a detector, see \Cake\Http\ServerRequest::addDetector() for the various formats and ways to define detectors.
array<callable|array>Array of environment data.
array<string, mixed>Store the additional attributes attached to the request.
array<string, mixed>Base URL path.
stringArray of cookie data.
array<string, mixed>Array of POST data. Will contain form data as well as uploaded files. In PUT/PATCH/DELETE requests this property will contain the form-urlencoded data.
object|array|nullA list of properties that emulated by the PSR7 attribute methods.
array<string>Instance of a FlashMessage object relative to this request
Cake\Http\FlashMessageArray of parameters parsed from the URL.
arrayThe HTTP protocol version used.
string|nullArray of query string arguments
arrayThe request target if overridden
string|nullInstance of a Session object relative to this request
Cake\Http\SessionRequest body stream. Contains php://input unless input constructor option is used.
Psr\Http\Message\StreamInterfaceWhether to trust HTTP_X headers set by most load balancers. Only set to true if your application runs behind load balancers/proxies that you control.
boolTrusted proxies list
array<string>Array of Psr\Http\Message\UploadedFileInterface objects.
arrayUri instance
Psr\Http\Message\UriInterfacewebroot path segment for the request.
string
© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.4/class-Cake.Http.ServerRequest.html