Skip to content

Headers

This is a simple object which allows you to manage the way headers are used in your application. It contains methods to set and get headers in your app.

TIP

You can still use most header methods from within the response and request objects, you can refer to those if you want to, however, this package comes with ore features and better useability.

To get started with the Headers object, you simply need to call whatever method you need on the Leaf\Http\Headers object. Since it's static, there's no need to initialize it.

status

This method sets or returns the base HTTP status of a response. Response methods allow you to directly set http status codes, however, if you want to use PHP's native output methods, you can set the status code here.

// ...
Leaf\Http\Headers::status(404);
echo 'Page not found';

You can also return the currently set status code.

$code = Leaf\Http\Headers::status();

resetStatus

If for some reason, you're not able to set the status using status, you can always fallback to resetStatus. This method uses PHP's inbuilt http_response_code.

// ...
Leaf\Http\Headers::resetStatus(200);
echo 'Something here';

all

This method returns all headers passed into your Leaf app. It takes in a single optional parameter, whether to sanitize header data or not, it is set to false by default.

// will not sanitize headers
Leaf\Http\Headers::all();

// will not sanitize headers
Leaf\Http\Headers::all(false);

// will sanitize headers
Leaf\Http\Headers::all(true);

get

This method as the name implies returns a particular header.

$content = Leaf\Http\Headers::get('Content-Type');

You can also get multiple headers at the same time.

$headerGroup = Leaf\Http\Headers::get(['Content-Type', 'Authorization']);

Just like all, you can also sanitize the information from get.

$data = Leaf\Http\Headers::get('header', true);

set

set allows you to add a new response header. It takes in 4 parameters:

  • The header to to set
  • Value for header
  • Replace similar header?
  • An http status code
Leaf\Http\Headers::set('location', '/home', true, 302);

You can also set multiple values at once.

Leaf\Http\Headers::set(['location' => '/home', 'something' => 'here']);

If you want multiple headers with the same name, you can set replace to false. This will force multiple headers of the same type.

Leaf\Http\Headers::set([
  'WWW-Authenticate' => 'Negotiate',
  'WWW-Authenticate' => 'NTLM'
], null, false);

remove

This method removes previously set headers.

// single value
Leaf\Http\Headers::remove('WWW-Authenticate');

// multiple value
Leaf\Http\Headers::remove(['Content-Type', 'WWW-Authenticate']);

has

This method allows you to check if a header has been set in the current request. It returns true if the header has been set and false otherwise.

if (Leaf\Http\Headers::has('X-SOME-HEADER')) {
  // do something nice
}

Utility Header methods

Some shortcut methods have been prepared for the most used headers, so you won't need to stress yourself writing a bunch of stuff for simple tasks.

contentPlain

This method set's the content type of the response to text/plain, it also takes in an HTTP status code.

Leaf\Http\Headers::contentPlain(200);
echo 'plain text here';

contentHtml

This method set's the content type of the response to text/html, it also takes in an HTTP status code.

Leaf\Http\Headers::contentHtml(200);
echo 'html here';

contentXml

This method set's the content type of the response to application/xml, it also takes in an HTTP status code.

Leaf\Http\Headers::contentXml(200);
echo 'Xml here';

contentJSON

This method set's the content type of the response to application/json, it also takes in an HTTP status code.

Leaf\Http\Headers::contentJSON(200);
echo 'json here';

accessControl

This method allows you to quickly set Access-Control headers in your app. It takes in 3 parameters:

  • The header to set
  • The value to set
  • A status code (optional)
Leaf\Http\Headers::accessControl('Allow-Origin', 'https://example.com', 200);

You can set mutiple access control headers at once:

Leaf\Http\Headers::accessControl(['Allow-Origin' => '*', 'Allow-Headers' => '*']);
Headers has loaded