public function url()
    {
        $scheme = $this->scheme();
        $scheme = $scheme ? $scheme . '://' : '//';
        $query = $this->query() ? '?' . http_build_query($this->query()) : '';
        $fragment = $this->fragment() ? '#' . $this->fragment() : '';
        return $scheme . $this->host() . $this->path() . $query . $fragment;
    }