class HTTPRequest implements ArrayAccess

Represents a HTTP-request, including a URL that is tokenised for parsing, and a request method (GET/POST/PUT/DELETE). This is used by {@link RequestHandler} objects to decide what to do.

Caution: objects of this class are immutable, e.g. echo $request['a']; works as expected, but $request['a'] = '1'; has no effect.

The intention is that a single HTTPRequest object can be passed from one object to another, each object calling match() to get the information that they need out of the URL. This is generally handled by {@link RequestHandler::handleRequest()}.

Methods

__construct(string $httpMethod, string $url, array $getVars = array(), array $postVars = array(), string $body = null)

Construct a HTTPRequest from a URL relative to the site root.

setUrl(string $url)

Allow the setting of a URL

bool
isGET()

No description

bool
isPOST()

No description

bool
isPUT()

No description

bool
isDELETE()

No description

bool
isHEAD()

No description

setBody(string $body)

No description

null|string
getBody()

No description

array
getVars()

No description

array
postVars()

No description

array
requestVars()

Returns all combined HTTP GET and POST parameters passed into this request. If a parameter with the same name exists in both arrays, the POST value is returned.

mixed
getVar(string $name)

No description

mixed
postVar(string $name)

No description

mixed
requestVar(string $name)

No description

string
getExtension()

Returns a possible file extension found in parsing the URL as denoted by a "."-character near the end of the URL.

bool
isMedia()

Checks if the {@link HTTPRequest->getExtension()} on this request matches one of the more common media types embedded into a webpage - e.g. css, png.

addHeader(string $header, string $value)

Add a HTTP header to the response, replacing any header of the same name.

array
getHeaders()

No description

mixed
getHeader(string $header)

Remove an existing HTTP header

removeHeader(string $header)

Remove an existing HTTP header by its name, e.g. "Content-Type".

string
getURL(bool $includeGetVars = false)

Returns the URL used to generate the page

boolean
isAjax()

Returns true if this request an ajax request, based on custom HTTP ajax added by common JavaScript libraries, or based on an explicit "ajax" request parameter.

bool
offsetExists(string $offset)

Enables the existence of a key-value pair in the request to be checked using array syntax, so isset($request['title']) will check for $_POST['title'] and $_GET['title']

mixed
offsetGet(string $offset)

Access a request variable using array syntax. eg: $request['title'] instead of $request->postVar('title')

offsetSet($offset, $value)

No description

offsetUnset($offset)

No description

static HTTPResponse
send_file($fileData, $fileName, null $mimeType = null)

Construct an HTTPResponse that will deliver a file to the client.

array|bool
match($pattern, bool $shiftOnSuccess = false)

Matches a URL pattern The pattern can contain a number of segments, separated by / (and an extension indicated by a .)

array
allParams()

No description

string
shiftAllParams()

Shift all the parameter values down a key space, and return the shifted value.

array
latestParams()

No description

string|null
latestParam(string $name)

No description

array
routeParams()

No description

setRouteParams($params)

No description

array
params()

No description

string
param(string $name)

Finds a named URL parameter (denoted by "$"-prefix in $url_handlers) from the full URL, or a parameter specified in the route table

string
remaining()

Returns the unparsed part of the original URL separated by commas. This is used by {@link RequestHandler->handleRequest()} to determine if further URL processing is necessary.

bool
isEmptyPattern(string $pattern)

Returns true if this is a URL that will match without shifting off any of the URL.

string|array
shift(int $count = 1)

Shift one or more parts off the beginning of the URL.

bool
allParsed()

Returns true if the URL has been completely parsed.

string
getHost()

No description

string
getIP()

Returns the client IP address which originated this request.

$this
setIP($ip)

Sets the client IP address which originated this request.

array
getAcceptMimetypes(boolean $includeQuality = false)

Returns all mimetypes from the HTTP "Accept" header as an array.

string
httpMethod()

No description

string
getScheme()

Return the URL scheme (e.g. "http" or "https").

$this
setScheme(string $scheme)

Set the URL scheme (e.g. "http" or "https").

static string
detect_method(string $origMethod, array $postVars)

Gets the "real" HTTP method for a request.

bool
hasSession()

Determines whether the request has a session

getSession()

No description

$this
setSession(Session $session)

No description

Details

at line 157
__construct(string $httpMethod, string $url, array $getVars = array(), array $postVars = array(), string $body = null)

Construct a HTTPRequest from a URL relative to the site root.

Parameters

string $httpMethod
string $url
array $getVars
array $postVars
string $body

at line 176
HTTPRequest setUrl(string $url)

Allow the setting of a URL

This is here so that RootURLController can change the URL of the request without us loosing all the other info attached (like headers)

Parameters

string $url The new URL

Return Value

HTTPRequest The updated request

at line 200
bool isGET()

Return Value

bool

at line 208
bool isPOST()

Return Value

bool

at line 216
bool isPUT()

Return Value

bool

at line 224
bool isDELETE()

Return Value

bool

at line 232
bool isHEAD()

Return Value

bool

at line 241
HTTPRequest setBody(string $body)

Parameters

string $body

Return Value

HTTPRequest $this

at line 250
null|string getBody()

Return Value

null|string

at line 258
array getVars()

Return Value

array

at line 266
array postVars()

Return Value

array

at line 278
array requestVars()

Returns all combined HTTP GET and POST parameters passed into this request. If a parameter with the same name exists in both arrays, the POST value is returned.

Return Value

array

at line 287
mixed getVar(string $name)

Parameters

string $name

Return Value

mixed

at line 299
mixed postVar(string $name)

Parameters

string $name

Return Value

mixed

at line 311
mixed requestVar(string $name)

Parameters

string $name

Return Value

mixed

at line 330
string getExtension()

Returns a possible file extension found in parsing the URL as denoted by a "."-character near the end of the URL.

Doesn't necessarily have to belong to an existing file, as extensions can be also used for content-type-switching.

Return Value

string

at line 344
bool isMedia()

Checks if the {@link HTTPRequest->getExtension()} on this request matches one of the more common media types embedded into a webpage - e.g. css, png.

This is useful for things like determining whether to display a fully rendered error page or not. Note that the media file types is not at all comprehensive.

Return Value

bool

at line 355
addHeader(string $header, string $value)

Add a HTTP header to the response, replacing any header of the same name.

Parameters

string $header Example: "content-type"
string $value Example: "text/xml"

at line 365
array getHeaders()

Return Value

array

at line 376
mixed getHeader(string $header)

Remove an existing HTTP header

Parameters

string $header

Return Value

mixed

at line 389
HTTPRequest removeHeader(string $header)

Remove an existing HTTP header by its name, e.g. "Content-Type".

Parameters

string $header

Return Value

HTTPRequest $this

at line 402
string getURL(bool $includeGetVars = false)

Returns the URL used to generate the page

Parameters

bool $includeGetVars whether or not to include the get parameters\

Return Value

string

at line 425
boolean isAjax()

Returns true if this request an ajax request, based on custom HTTP ajax added by common JavaScript libraries, or based on an explicit "ajax" request parameter.

Return Value

boolean

at line 440
bool offsetExists(string $offset)

Enables the existence of a key-value pair in the request to be checked using array syntax, so isset($request['title']) will check for $_POST['title'] and $_GET['title']

Parameters

string $offset

Return Value

bool

at line 451
mixed offsetGet(string $offset)

Access a request variable using array syntax. eg: $request['title'] instead of $request->postVar('title')

Parameters

string $offset

Return Value

mixed

at line 456
offsetSet($offset, $value)

Parameters

$offset
$value

at line 461
offsetUnset($offset)

Parameters

$offset

at line 478
static HTTPResponse send_file($fileData, $fileName, null $mimeType = null)

Construct an HTTPResponse that will deliver a file to the client.

Caution: Since it requires $fileData to be passed as binary data (no stream support), it's only advisable to send small files through this method.

Parameters

$fileData
$fileName
null $mimeType

Return Value

HTTPResponse

at line 511
array|bool match($pattern, bool $shiftOnSuccess = false)

Matches a URL pattern The pattern can contain a number of segments, separated by / (and an extension indicated by a .)

The parts can be either literals, or, if they start with a $ they are interpreted as variables. - Literals must be provided in order to match - $Variables are optional - However, if you put ! at the end of a variable, then it becomes mandatory.

For example: - admin/crm/list will match admin/crm/$Action/$ID/$OtherID, but it won't match admin/crm/$Action!/$ClassName!

The pattern can optionally start with an HTTP method and a space. For example, "POST $Controller/$Action". This is used to define a rule that only matches on a specific HTTP method.

Parameters

$pattern
bool $shiftOnSuccess

Return Value

array|bool

at line 611
array allParams()

Return Value

array

at line 621
string shiftAllParams()

Shift all the parameter values down a key space, and return the shifted value.

Return Value

string

at line 642
array latestParams()

Return Value

array

at line 651
string|null latestParam(string $name)

Parameters

string $name

Return Value

string|null

at line 663
array routeParams()

Return Value

array

at line 672
HTTPRequest setRouteParams($params)

Parameters

$params

Return Value

HTTPRequest $this

at line 681
array params()

Return Value

array

at line 693
string param(string $name)

Finds a named URL parameter (denoted by "$"-prefix in $url_handlers) from the full URL, or a parameter specified in the route table

Parameters

string $name

Return Value

string Value of the URL parameter (if found)

at line 710
string remaining()

Returns the unparsed part of the original URL separated by commas. This is used by {@link RequestHandler->handleRequest()} to determine if further URL processing is necessary.

Return Value

string Partial URL

at line 722
bool isEmptyPattern(string $pattern)

Returns true if this is a URL that will match without shifting off any of the URL.

This is used by the request handler to prevent infinite parsing loops.

Parameters

string $pattern

Return Value

bool

at line 741
string|array shift(int $count = 1)

Shift one or more parts off the beginning of the URL.

If you specify shifting more than 1 item off, then the items will be returned as an array

Parameters

int $count Shift Count

Return Value

string|array

at line 768
bool allParsed()

Returns true if the URL has been completely parsed.

This will respect parsed but unshifted directory parts.

Return Value

bool

at line 776
string getHost()

Return Value

string Return the host from the request

at line 786
string getIP()

Returns the client IP address which originated this request.

Return Value

string

at line 798
$this setIP($ip)

Sets the client IP address which originated this request.

Use setIPFromHeaderValue if assigning from header value.

Parameters

$ip string

Return Value

$this

at line 815
array getAcceptMimetypes(boolean $includeQuality = false)

Returns all mimetypes from the HTTP "Accept" header as an array.

Parameters

boolean $includeQuality Don't strip away optional "quality indicators", e.g. "application/xml;q=0.9" (Default: false)

Return Value

array

at line 828
string httpMethod()

Return Value

string HTTP method (all uppercase)

at line 839
string getScheme()

Return the URL scheme (e.g. "http" or "https").

Equivalent to PSR-7 getUri()->getScheme()

Return Value

string

at line 851
$this setScheme(string $scheme)

Set the URL scheme (e.g. "http" or "https").

Equivalent to PSR-7 getUri()->getScheme(),

Parameters

string $scheme

Return Value

$this

at line 873
static string detect_method(string $origMethod, array $postVars)

Gets the "real" HTTP method for a request.

Used to work around browser limitations of form submissions to GET and POST, by overriding the HTTP method with a POST parameter called "_method" for PUT, DELETE, HEAD. Using GET for the "_method" override is not supported, as GET should never carry out state changes. Alternatively you can use a custom HTTP header 'X-HTTP-Method-Override' to override the original method. The '_method' POST parameter overrules the custom HTTP header.

Parameters

string $origMethod Original HTTP method from the browser request
array $postVars

Return Value

string HTTP method (all uppercase)

at line 890
bool hasSession()

Determines whether the request has a session

Return Value

bool

at line 898
Session getSession()

Return Value

Session

at line 910
$this setSession(Session $session)

Parameters

Session $session

Return Value

$this