Resolves a URI reference in the context of a base URI and the opposite way.

CloneableFinal
Methods
public static relativize(Psr\Http\Message\UriInterface $base, Psr\Http\Message\UriInterface $target)
 
Returns the target URI as a relative reference from the base URI.

This method is the counterpart to resolve():

(string) $target === (string) UriResolver::resolve($base, UriResolver::relativize($base, $target))

One use-case is to use the current request URI as base URI and then generate relative links in your documents
to reduce the document size or offer self-contained downloadable document archives.

$base = new Uri('http://example.com/a/b/');
echo UriResolver::relativize($base, new Uri('http://example.com/a/b/c')); // prints 'c'.
echo UriResolver::relativize($base, new Uri('http://example.com/a/x/y')); // prints '../x/y'.
echo UriResolver::relativize($base, new Uri('http://example.com/a/b/?q')); // prints '?q'.
echo UriResolver::relativize($base, new Uri('http://example.org/a/b/')); // prints '//example.org/a/b/'.

This method also accepts a target that is already relative and will try to relativize it further. Only a
relative-path reference will be returned as-is.

echo UriResolver::relativize($base, new Uri('/a/b/c')); // prints 'c' as well

  • return UriInterface The relative URI reference
public static removeDotSegments( $path)
 
Removes dot segments from a path and returns the new path.

public static resolve(Psr\Http\Message\UriInterface $base, Psr\Http\Message\UriInterface $rel)
 
Converts the relative URI into a new URI that is resolved against the base URI.

Methods
private __construct()
private static getRelativePath(Psr\Http\Message\UriInterface $base, Psr\Http\Message\UriInterface $target)
Methods
private static getRelativePath(Psr\Http\Message\UriInterface $base, Psr\Http\Message\UriInterface $target)
public static relativize(Psr\Http\Message\UriInterface $base, Psr\Http\Message\UriInterface $target)
 
Returns the target URI as a relative reference from the base URI.

This method is the counterpart to resolve():

(string) $target === (string) UriResolver::resolve($base, UriResolver::relativize($base, $target))

One use-case is to use the current request URI as base URI and then generate relative links in your documents
to reduce the document size or offer self-contained downloadable document archives.

$base = new Uri('http://example.com/a/b/');
echo UriResolver::relativize($base, new Uri('http://example.com/a/b/c')); // prints 'c'.
echo UriResolver::relativize($base, new Uri('http://example.com/a/x/y')); // prints '../x/y'.
echo UriResolver::relativize($base, new Uri('http://example.com/a/b/?q')); // prints '?q'.
echo UriResolver::relativize($base, new Uri('http://example.org/a/b/')); // prints '//example.org/a/b/'.

This method also accepts a target that is already relative and will try to relativize it further. Only a
relative-path reference will be returned as-is.

echo UriResolver::relativize($base, new Uri('/a/b/c')); // prints 'c' as well

  • return UriInterface The relative URI reference
public static removeDotSegments( $path)
 
Removes dot segments from a path and returns the new path.

public static resolve(Psr\Http\Message\UriInterface $base, Psr\Http\Message\UriInterface $rel)
 
Converts the relative URI into a new URI that is resolved against the base URI.

© 2020 Bruce Wells
Search Namespaces \ Classes
ConfigurationNumbers (0-9.) only