public function getUrl()
    {
        $url = $this->getBaseUrl();

        if ($query = $this->getQueryString()) {
            if ($url) {
                if (!$this->path) {
                    $url .= '/';
                }
                $url .= '?';
            }

            $url .= $query;
        }

        if (isset($this->fragment)) {
            $url .= '#' . $this->fragment;
        }

        return $url;
    }