Http, Https URI
Instantiation
To work with Http URIs you can use the League\Uri\Schemes\Http
class. This class handles secure and insecure Http URI. In addition to the defined named constructors, the Http
class can be instantiated using the server variables.
<?php
use League\Uri\Schemes\Http as HttpUri;
//don't forget to provide the $_SERVER array
$uri = HttpUri::createFromServer($_SERVER);
Validation
If a scheme is present and the scheme specific part of a Http URI is not empty the URI can not contain an empty authority. Thus, some Http URI modifications must be applied in a specific order to preserve the URI validation.
<?php
use League\Uri\Schemes\Http as HttpUri;
$uri = HttpUri::createFromString('http://uri.thephpleague.com/');
echo $uri->withHost('')->withScheme('')->__toString();
// will throw an InvalidArgumentException
// you can not remove the Host if a scheme is present
Instead you are required to proceed as below
<?php
use League\Uri\Schemes\Http as HttpUri;
$uri = HttpUri::createFromString('http://uri.thephpleague.com/');
echo $uri->withScheme('')->withHost('')->__toString(); //displays "/"
Relation with PSR-7
The Http
class is compliant with PSR-7 UriInterface
interface. This means that you can use this class anytime you need a PSR-7 compliant URI object.
Properties
The Http URI class uses the specialized HierarchicalPath class to represents its path. using PHP’s magic __get
method you can access the object path and get more informations about the underlying path.
<?php
use League\Uri\Schemes\Http as HttpUri;
$uri = HttpUri::createFromString('http://uri.thephpleague.com/uri/schemes/http.md');
echo $uri->path->getBasename(); //display 'http.md'
echo $uri->path->getDirname(); //display '/uri/schemes'
echo $uri->path->getExtension(); //display 'md'
$uri->path->getSegments(); //returns an array representation of the path segments