\Cake\HttpServerRequestFactory

Factory for making ServerRequest instances.

This subclass adds in CakePHP specific behavior to populate the basePath and webroot attributes. Furthermore the Uri's path is corrected to only contain the 'virtual' path for the request.

Summary

Methods
Properties
Constants
fromGlobals()
get()
getHeader()
normalizeServer()
normalizeFiles()
marshalHeaders()
marshalUriFromServer()
marshalHostAndPortFromHeaders()
marshalRequestUri()
stripQueryString()
createUri()
No public properties found
No constants found
updatePath()
getBase()
No protected properties found
N/A
No private methods found
$apacheRequestHeaders
N/A

Properties

$apacheRequestHeaders

$apacheRequestHeaders : callable

Function to use to get apache request headers; present only to simplify mocking.

Type

callable

Methods

fromGlobals()

fromGlobals(array  $server = null, array  $query = null, array  $body = null, array  $cookies = null, array  $files = null) : \Zend\Diactoros\ServerRequest

Create a request from the supplied superglobal values.

If any argument is not supplied, the corresponding superglobal value will be used.

The ServerRequest created is then passed to the fromServer() method in order to marshal the request URI and headers.

Parameters

array $server

$_SERVER superglobal

array $query

$_GET superglobal

array $body

$_POST superglobal

array $cookies

$_COOKIE superglobal

array $files

$_FILES superglobal

Returns

\Zend\Diactoros\ServerRequest

get()

get(string  $key, array  $values, mixed  $default = null) : mixed

Access a value in an array, returning a default value if not found

Parameters

string $key
array $values
mixed $default

Returns

mixed

getHeader()

getHeader(string  $header, array  $headers, mixed  $default = null) : string

Search for a header value.

Does a case-insensitive search for a matching header.

If found, it is returned as a string, using comma concatenation.

If not, the $default is returned.

Parameters

string $header
array $headers
mixed $default

Returns

string

normalizeServer()

normalizeServer(array  $server) : array

Marshal the $_SERVER array

Pre-processes and returns the $_SERVER superglobal.

Parameters

array $server

Returns

array

normalizeFiles()

normalizeFiles(array  $files) : array

Normalize uploaded files

Transforms each value into an UploadedFileInterface instance, and ensures that nested arrays are normalized.

Parameters

array $files

Throws

\InvalidArgumentException

for unrecognized values

Returns

array

marshalHeaders()

marshalHeaders(array  $server) : array

Marshal headers from $_SERVER

Parameters

array $server

Returns

array

marshalUriFromServer()

marshalUriFromServer(array  $server, array  $headers) : \Psr\Http\Message\UriInterface

Build a UriInterface object.

Add in some CakePHP specific logic/properties that help preserve backwards compatibility.

Parameters

array $server

The server parameters.

array $headers

The normalized headers

Returns

\Psr\Http\Message\UriInterface

a constructed Uri

marshalHostAndPortFromHeaders()

marshalHostAndPortFromHeaders(\stdClass  $accumulator, array  $server, array  $headers) 

Marshal the host and port from HTTP headers and/or the PHP environment

Parameters

\stdClass $accumulator
array $server
array $headers

marshalRequestUri()

marshalRequestUri(array  $server) : string

Detect the base URI for the request

Looks at a variety of criteria in order to attempt to autodetect a base URI, including rewrite URIs, proxy URIs, etc.

Parameters

array $server

Returns

string

stripQueryString()

stripQueryString(mixed  $path) : string

Strip the query string from a path

Parameters

mixed $path

Returns

string

createUri()

createUri(array  $server = array()) : \Psr\Http\Message\UriInterface

Create a new Uri instance from the provided server data.

Parameters

array $server

Array of server data to build the Uri from. $_SERVER will be added into the $server parameter.

Returns

\Psr\Http\Message\UriInterface

New instance.

updatePath()

updatePath(string  $base, \Psr\Http\Message\UriInterface  $uri) : \Psr\Http\Message\UriInterface

Updates the request URI to remove the base directory.

Parameters

string $base

The base path to remove.

\Psr\Http\Message\UriInterface $uri

The uri to update.

Returns

\Psr\Http\Message\UriInterface

The modified Uri instance.

getBase()

getBase(\Psr\Http\Message\UriInterface  $uri, array  $server) : array

Calculate the base directory and webroot directory.

Parameters

\Psr\Http\Message\UriInterface $uri

The Uri instance.

array $server

The SERVER data to use.

Returns

array —

An array containing the [baseDir, webroot]