Headers
Both request and response messages contain HTTP headers.
Accessing Headers
You can check if a request or response has a specific header using the hasHeader() method.
use GuzzleHttp\Psr7;$request = new Psr7\Request('GET', '/', ['X-Foo' => 'bar']);if ($request->hasHeader('X-Foo')) {echo 'It is there';}
You can retrieve all the header values as an array of strings using getHeader().
$request->getHeader('X-Foo'); // ['bar']// Retrieving a missing header returns an empty array.$request->getHeader('X-Bar'); // []
You can iterate over the headers of a message using the getHeaders() method.
foreach ($request->getHeaders() as $name => $values) {echo $name . ': ' . implode(', ', $values) . "\r\n";}
Complex Headers
Some headers contain additional key value pair information. For example, Link headers contain a link and several key value pairs:
<http://foo.com>; rel="thing"; type="image/jpeg"
Guzzle provides a convenience feature that can be used to parse these types of headers:
use GuzzleHttp\Psr7;$request = new Psr7\Request('GET', '/', ['Link' => '<http:/.../front.jpeg>; rel="front"; type="image/jpeg"']);$parsed = Psr7\parse_header($request->getHeader('Link'));var_export($parsed);
Will output:
array (0 =>array (0 => '<http:/.../front.jpeg>','rel' => 'front','type' => 'image/jpeg',),)
The result contains a hash of key value pairs. Header values that have no key (i.e., the link) are indexed numerically while headers parts that form a key value pair are added as a key value pair.
