public function parseUrl($url)
{
$url = (string) $url;
$parsedUrl = $this->doParseUrl($url);
if ($parsedUrl === false) {
throw new \InvalidArgumentException(sprintf('Invalid url %s', $url));
}
$parsedUrl = array_merge(self::$defaultParts, $parsedUrl);
if (isset($parsedUrl['host'])) {
$parsedUrl['publicSuffix'] = $this->pslParser->getPublicSuffix($parsedUrl['host']);
$parsedUrl['registerableDomain'] = $this->pslParser->getRegisterableDomain($parsedUrl['host']);
$parsedUrl['subdomain'] = $this->pslParser->getSubdomain($parsedUrl['host']);
$parsedUrl['canonical'] = implode('.', array_reverse(explode('.', $parsedUrl['host']))) . (isset($parsedUrl['path']) ? $parsedUrl['path'] : '') . (isset($parsedUrl['query']) ? '?' . $parsedUrl['query'] : '');
$parsedUrl['resource'] = isset($parsedUrl['path']) ? $parsedUrl['path'] : '';
if (isset($parsedUrl['query'])) {
$parsedUrl['resource'] .= '?' . $parsedUrl['query'];
}
}
return $parsedUrl;
}