All Available Url Components
Below, you can see a visualization of all the components that are available to
you via a Url object.
https://john:123@subdomain.example.com:8080/foo?bar=baz#anchor
domainLabel domainSuffix
↓ ↓
_____ ____ ___ _____________________ ____ ____ _______ ______
|https||john|123|subdomain.example.com|8080|/foo|bar=baz|anchor|
‾‾‾‾‾ ‾‾‾‾ ‾‾‾ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ ‾‾‾‾ ‾‾‾‾ ‾‾‾‾‾‾‾ ‾‾‾‾‾‾
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
scheme user ↑ subdomain domain port path query fragment
↑ ⤷ host ⤶
| pass(word) |
|___________________________________|
|john:123@subdomain.example.com:8080|
|‾‾‾‾‾‾‾‾|‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
|________| ↑
|john:123| authority
‾‾‾‾‾‾‾‾
↑
userInfo
When a component is not present in an url (e.g. it doesn't contain user and
password) the corresponding properties will return NULL.
Further available component combinations
The following combinations of components aren't really common, but may as well be useful sometimes.
_______________________ ___________________
|https://www.example.com| |/foo?bar=baz#anchor|
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
↑ ↑
root relative
root
The root as it's called here, consists of the scheme and the authority
components.
$url = Url::parse('https://www.example.com:8080/foo?bar=baz');
$root = $url->root(); // => "https://www.example.com:8080"
relative
Complementary to root you can retrieve path, query and fragment via the
relative method.
$url = Url::parse('https://www.example.com/foo?bar=baz#anchor');
$relative = $url->relative(); // => "/foo?bar=baz#anchor"