public function __construct($url = null) { if ($url) { $parts = parse_url($url); if (isset($parts["scheme"])) { $this->setScheme(new Scheme($parts["scheme"])); } else { if (substr($url, 0, 2) === '//') { $this->makeSchemeless(); } } if (isset($parts["user"]) || isset($parts["pass"])) { $this->setAuthInfo(new AuthInfo($parts["user"], $parts["pass"])); } if (isset($parts["host"])) { $this->setHost(new Host($parts["host"])); if (isset($parts["port"])) { $this->host->setPort($parts["port"]); } } if (isset($parts["path"])) { $this->setPath(new Path($parts["path"])); } if (isset($parts["query"])) { $this->setQuery(new Query($parts["query"])); } if (isset($parts["fragment"])) { $this->setFragment(new Fragment($parts["fragment"])); } } }