Hi Maté and all, A one-off comment about the exceptions:
The RFC posits that _Uri\UriException_ extends _Exception_, and _Uri\InvalidUriException_ extends _UriException_. However, pre-existing userland solutions to the URI problem lean more heavily on the native PHP _InvalidArgumentException_, which extends _LogicException_. (Cf. <https://github.com/uri-interop/interface/blob/1.x/README-RESEARCH.md#exceptions>.) (_LogicException_ "represents an error in the program logic. This kind of exception should lead directly to a fix in your code.") As such, the _InvalidUriException_ would better extend from _LogicException_. What then to do with _UriException_ ? It's a base, it never gets thrown anywhere. If a base is actually necessary, perhaps it should be renamed _UriLogicException) and extend _LogicException_; then _InvalidUriException_ can extend from that base. This leaves room for a _UriRuntimeException_ base, should one ever be needed. -- pmj