Hamlet Framework / HTTP / Request
PSR-7 and PSR-17 implementation.
This library generally provides you with three ways of creating objects.
The standard approach is to create an object through a series of adjustments.
$message = Message::empty() ->withProtocolVersion('1.1') ->withHeader('Host', 'example.net');
Note, that all
with* methods are validating and in the example above we're creating 2 intermediate objects along the way.
We can avoid creating multiple objects by using a validating builder
$message = Message::validatingBuilder() ->withProtocolVersion('1.1') ->withBody($body) ->withHeaders($headers) ->build();
It offers the same level of validation as the previous method.
When creating messages within you application's secure boundaries, there is a way to avoid redundant argument validation by using non-validating builders
$message = Message::nonValidatingBuilder() ->withProtocolVersion('1.1') ->withBody($body) ->withHeaders($headers) ->build();
When in doubt use validating builders.
- Adapt tests from https://github.com/Sporkmonger/Addressable/blob/master/spec/addressable/uri_spec.rb
- Expand test coverage