示例#1
0
 /**
  * @param UriInterface $uri
  * @param UriInterface $baseUri
  *
  * @return UriInterface
  */
 public function resolve(UriInterface $uri, UriInterface $baseUri)
 {
     $baseUriReflector = new ReflectionObject($baseUri);
     if (!$baseUriReflector->hasMethod('resolve')) {
         $baseUri = new Uri($baseUri->toString());
         if ($uri instanceof Uri) {
             $uri = clone $uri;
         } else {
             $uri = new Uri($uri->toString());
         }
     } elseif (!$uri instanceof $baseUri) {
         $uri = $baseUriReflector->newInstance($uri->toString());
     } else {
         $uri = clone $uri;
     }
     return $uri->resolve($baseUri);
 }
示例#2
0
 /**
  * @param string      $uri
  * @param string|null $defaultScheme
  *
  * @return UriInterface
  */
 public function create($uri, $defaultScheme = null)
 {
     if (!is_string($uri)) {
         throw new InvalidArgumentException('URI must be a string.');
     }
     $scheme = Uri::parseScheme($uri);
     if (null === $scheme) {
         $scheme = $defaultScheme;
     }
     $schemeClass = $this->schemeClass($scheme);
     return new $schemeClass($uri);
 }