Skip to content
This repository has been archived by the owner on May 24, 2018. It is now read-only.

Latest commit

 

History

History
490 lines (298 loc) · 11.3 KB

zend.http.request.rst

File metadata and controls

490 lines (298 loc) · 11.3 KB

The Request Class

Overview

The Zend\Http\Request object is responsible for providing a fluent API that allows a developer to interact with all the various parts of an HTTP request.

A typical HTTP request looks like this:

--------------------------
| METHOD | URI | VERSION |
--------------------------
|        HEADERS         |
--------------------------
|         BODY           |
--------------------------

In simplified terms, the request consists of a method, URI and HTTP version number which together make up the "Request Line." Next come the HTTP headers, of which there can be 0 or more. After that is the request body, which is typically used when a client wishes to send data to the server in the form of an encoded file, or include a set of POST parameters, for example. More information on the structure and specification of a HTTP request can be found in RFC-2616 on the W3.org site.

Quick Start

Request objects can either be created from the provided fromString() factory, or, if you wish to have a completely empty object to start with, by simply instantiating the Zend\Http\Request class.

use Zend\Http\Request;

$request = Request::fromString(<<<EOS
POST /foo HTTP/1.1
\r\n
HeaderField1: header-field-value1
HeaderField2: header-field-value2
\r\n\r\n
foo=bar&
EOS
);

// OR, the completely equivalent

$request = new Request();
$request->setMethod(Request::METHOD_POST);
$request->setUri('/foo');
$request->getHeaders()->addHeaders(array(
    'HeaderField1' => 'header-field-value1',
    'HeaderField2' => 'header-field-value2',
));
$request->getPost()->set('foo', 'bar');

Configuration Options

No configuration options are available.

Available Methods

Request::fromString

Request::fromString(string $string)

A factory that produces a Request object from a well-formed HTTP Request string.

Returns Zend\Http\Request

setMethod

setMethod(string $method)

Set the method for this request.

Returns Zend\Http\Request

getMethod

getMethod()

Return the method for this request.

Returns string

setUri

setUri(string|Zend\Uri\Http $uri)

Set the URI/URL for this request; this can be a string or an instance of Zend\Uri\Http.

Returns Zend\Http\Request

getUri

getUri()

Return the URI for this request object.

Returns Zend\Uri\Http

getUriString

getUriString()

Return the URI for this request object as a string.

Returns string

setVersion

setVersion(string $version)

Set the HTTP version for this object, one of 1.0 or 1.1 (Request::VERSION_10, Request::VERSION_11).

Returns Zend\Http\Request

getVersion

getVersion()

Return the HTTP version for this request.

Returns string

setQuery

setQuery(Zend\Stdlib\ParametersInterface $query)

Provide an alternate Parameter Container implementation for query parameters in this object. (This is NOT the primary API for value setting; for that, see getQuery()).

Returns Zend\Http\Request

getQuery

getQuery(string|null $name, mixed|null $default)

Return the parameter container responsible for query parameters or a single query parameter.

Returns string, Zend\Stdlib\ParametersInterface, or null depending on value of $name argument.

setPost

setPost(Zend\Stdlib\ParametersInterface $post)

Provide an alternate Parameter Container implementation for POST parameters in this object. (This is NOT the primary API for value setting; for that, see getPost()).

Returns Zend\Http\Request

getPost

getPost(string|null $name, mixed|null $default)

Return the parameter container responsible for POST parameters or a single POST parameter.

Returns string, Zend\Stdlib\ParametersInterface, or null depending on value of $name argument.

setFiles

setFiles(Zend\Stdlib\ParametersInterface $files)

Provide an alternate Parameter Container implementation for file parameters in this object, (This is NOT the primary API for value setting; for that, see getFiles()).

Returns Zend\Http\Request

getFiles

getFiles(string|null $name, mixed|null $default)

Return the parameter container responsible for file parameters or a single file parameter.

Returns string, Zend\Stdlib\ParametersInterface, or null depending on value of $name argument.

setHeaders

setHeaders(Zend\Http\Headers $headers)

Provide an alternate Parameter Container implementation for headers in this object, (this is NOT the primary API for value setting, for that see getHeaders()).

Returns Zend\Http\Request

getHeaders

getHeaders(string|null $name, mixed|null $default)

Return the container responsible for storing HTTP headers. This container exposes the primary API for manipulating headers set in the HTTP request. See the section on Zend\\Http\\Headers<zend.http.headers> for more information.

Returns Zend\Http\Headers if $name is null. Returns Zend\Http\Header\HeaderInterface or ArrayIterator if $name matches one or more stored headers, respectively.

setMetadata

setMetadata(string|int|array|Traversable $spec, mixed $value)

Set message metadata.

Non-destructive setting of message metadata; always adds to the metadata, never overwrites the entire metadata container.

Returns Zend\Http\Request

getMetadata

getMetadata(null|string|int $key, null|mixed $default)

Retrieve all metadata or a single metadatum as specified by key.

Returns mixed

setContent

setContent(mixed $value)

Set request body (content).

Returns Zend\Http\Request

getContent

getContent()

Get request body (content).

Returns mixed

isOptions

isOptions()

Is this an OPTIONS method request?

Returns bool

isGet

isGet()

Is this a GET method request?

Returns bool

isHead

isHead()

Is this a HEAD method request?

Returns bool

isPost

isPost()

Is this a POST method request?

Returns bool

isPut

isPut()

Is this a PUT method request?

Returns bool

isDelete

isDelete()

Is this a DELETE method request?

Returns bool

isTrace

isTrace()

Is this a TRACE method request?

Returns bool

isConnect

isConnect()

Is this a CONNECT method request?

Returns bool

isPatch

isPatch()

Is this a PATCH method request?

Returns bool

isXmlHttpRequest

isXmlHttpRequest()

Is this a Javascript XMLHttpRequest?

Returns bool

isFlashRequest

isFlashRequest()

Is this a Flash request?

Returns bool

renderRequestLine

renderRequestLine()

Return the formatted request line (first line) for this HTTP request.

Returns string

toString

toString()

Returns string

__toString

__toString()

Allow PHP casting of this object.

Returns string

Examples

Generating a Request object from a string

use Zend\Http\Request;

$string = "GET /foo HTTP/1.1\r\n\r\nSome Content";
$request = Request::fromString($string);

$request->getMethod();    // returns Request::METHOD_GET
$request->getUri();       // returns Zend\Uri\Http object
$request->getUriString(); // returns '/foo'
$request->getVersion();   // returns Request::VERSION_11 or '1.1'
$request->getContent();   // returns 'Some Content'

Retrieving and setting headers

use Zend\Http\Request;
use Zend\Http\Header\Cookie;

$request = new Request();
$request->getHeaders()->get('Content-Type'); // return content type
$request->getHeaders()->addHeader(new Cookie(array('foo' => 'bar')));
foreach ($request->getHeaders() as $header) {
    echo $header->getFieldName() . ' with value ' . $header->getFieldValue();
}

Retrieving and setting GET and POST values

use Zend\Http\Request;

$request = new Request();

// getPost() and getQuery() both return, by default, a Parameters object, which extends ArrayObject
$request->getPost()->foo = 'Foo value';
$request->getQuery()->bar = 'Bar value';
$request->getPost('foo'); // returns 'Foo value'
$request->getQuery()->offsetGet('bar'); // returns 'Bar value'

Generating a formatted HTTP Request from a Request object

use Zend\Http\Request;

$request = new Request();
$request->setMethod(Request::METHOD_POST);
$request->setUri('/foo');
$request->getHeaders()->addHeaders(array(
    'HeaderField1' => 'header-field-value1',
    'HeaderField2' => 'header-field-value2',
));
$request->getPost()->set('foo', 'bar');
$request->setContent($request->getPost()->toString());
echo $request->toString();

/** Will produce:
POST /foo HTTP/1.1
HeaderField1: header-field-value1
HeaderField2: header-field-value2

foo=bar
*/