9.4 KiB
The Request Class
Zend\Http\Request
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; together, they make up the "Request Line." This line is followed by zero or more HTTP headers, which is followed by an empty line and then the request body; the body is typically used when a client wishes to send data — which could be urlencoded parameters, a JSON document, an XML document, or even one or more files — to the server. 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
manually instantiating the Zend\Http\Request
class with no parameters.
use Zend\Http\Request;
$request = Request::fromString(<<<EOS
POST /foo HTTP/1.1
HeaderField1: header-field-value1
HeaderField2: header-field-value2
foo=bar
EOS
);
// OR, the completely equivalent
$request = new Request();
$request->setMethod(Request::METHOD_POST);
$request->setUri('/foo');
$request->getHeaders()->addHeaders([
'HeaderField1' => 'header-field-value1',
'HeaderField2' => 'header-field-value2',
]);
$request->getPost()->set('foo', 'bar');
Configuration Options
No configuration options are available.
Available Methods
The following table details available methods, their signatures, and a brief description. Note that the following references refer to the following fully qualified class names and/or namespaces:
HeaderInterface
:Zend\Http\Header\HeaderInterface
Headers
:Zend\Http\Headers
Header
:Zend\Http\Header
Parameters
:Zend\Stdlib\ParametersInterface
Request
:Zend\Http\Request
Uri
:Zend\Uri\Http
Method signature | Description |
---|---|
static fromString(string $string) : Request |
A factory that produces a Request object from a well-formed HTTP request message string. |
setMethod(string $method) : self |
Set the method for this request. |
getMethod() : string |
Return the method for this request. |
`setUri(string | Uri $uri) : self` |
getUri() : Uri |
Return the URI for this request object. |
getUriString() : string |
Return the URI for this request object as a string. |
setVersion(string $version) : self |
Set the HTTP version for this object, one of 1.0 or 1.1 (Request::VERSION_10 , Request::VERSION_11 ). |
getVersion() : string |
Return the HTTP version for this request. |
setQuery(Parameters $query) : self |
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() ). |
`getQuery(string | null $name, mixed |
setPost(Parameters $post) : self |
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() ). |
`getPost(string | null $name, mixed |
getCookie() : Header\Cookie |
Return the Cookie header, this is the same as calling $request->getHeaders()->get('Cookie'); . |
setFiles(Parameters $files) : self |
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() ). |
`getFiles(string | null $name, mixed |
setHeaders(Headers $headers) : self |
Provide an alternate Parameter Container implementation for headers in this object, (this is NOT the primary API for value setting, for that see getHeaders() ). |
`getHeaders(string | null $name, mixed |
`setMetadata(string | int |
`getMetadata(null | string |
setContent(mixed $value) : self |
Set request body (content). |
getContent() : mixed |
Get request body (content). |
isOptions() : bool |
Is this an OPTIONS method request? |
isGet() : bool |
Is this a GET method request? |
isHead() : bool |
Is this a HEAD method request? |
isPost() : bool |
Is this a POST method request? |
isPut() : bool |
Is this a PUT method request? |
isDelete() : bool |
Is this a DELETE method request? |
isTrace() : bool |
Is this a TRACE method request? |
isConnect() : bool |
Is this a CONNECT method request? |
isPatch() : bool |
Is this a PATCH method request? |
isXmlHttpRequest() : bool |
Is this a Javascript XMLHttpRequest? |
isFlashRequest() : bool |
Is this a Flash request? |
renderRequestLine() : string |
Return the formatted request line (first line) for this HTTP request. |
toString() : string |
Returns string |
__toString() : string |
Allow PHP casting of this object. |
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(['foo' => 'bar']));
foreach ($request->getHeaders() as $header) {
printf("%s with value %s\n", $header->getFieldName(), $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([
'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
*/