Phly\Http\RequestTrait::withUri PHP Method

withUri() public method

This method will update the Host header of the returned request by default if the URI contains a host component. If the URI does not contain a host component, any pre-existing Host header will be carried over to the returned request. You can opt-in to preserving the original state of the Host header by setting $preserveHost to true. When $preserveHost is set to true, the returned request will not update the Host header of the returned message -- even if the message contains no Host header. This means that a call to getHeader('Host') on the original request MUST equal the return value of a call to getHeader('Host') on the returned request. This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that has the new UriInterface instance.
public withUri ( Psr\Http\Message\UriInterface $uri, boolean $preserveHost = false ) : self
$uri Psr\Http\Message\UriInterface New request URI to use.
$preserveHost boolean Preserve the original state of the Host header.
return self
    public function withUri(UriInterface $uri, $preserveHost = false)
    {
        $new = clone $this;
        $new->uri = $uri;
        if ($preserveHost) {
            return $new;
        }
        if (!$uri->getHost()) {
            return $new;
        }
        $host = $uri->getHost();
        if ($uri->getPort()) {
            $host .= ':' . $uri->getPort();
        }
        $new->headerNames['host'] = 'Host';
        $new->headers['Host'] = array($host);
        return $new;
    }