/** * Create a URL object. * * @param string|Url|Request $request * @param array $routes */ public function __construct($request = null, array $routes = []) { if (is_string($request) || is_a($request, static::class)) { $request = (string) $request; $this->request = Request::create($request); if (false !== strpos($request, '#')) { $this->fragment = (string) S::create($request)->substr(strpos($request, '#'))->removeLeft('#'); } } elseif (is_a($request, Request::class)) { $this->request = $request; } else { $this->request = Request::createFromGlobals(); } $this->routes = $routes; $this->scheme = $this->request->getScheme(); $this->user = $this->request->getUser(); $this->password = $this->request->getPassword(); $this->host = $this->request->getHost(); $this->port = $this->request->getPort(); $this->path = array_filter(explode('/', $this->request->getPathInfo())); parse_str($this->request->getQueryString(), $this->query); }