Hey Ignace,

(let me answer in the original thread, as apparently the discussion
continued in a separate thread from the main one)

> - I believe during normalization of IPv6 host the letter a-f should be
> lowercase in accordance with the RFC since
>
> RFC3986 follows https://www.rfc-editor.org/rfc/rfc3513 which has been
> replaced by https://www.rfc-editor.org/rfc/rfc4291 which is updated by
> https://www.rfc-editor.org/rfc/rfc5952#section-4.3 which recommends
> lowecasing the letters. (yeah that was quite a digging I know 🙂 )
>
That's quite a long chain of RFC updates.... But yes, RFC 3986 explicitly
mentions this here:

Although host is case-insensitive, producers and normalizers should use
> lowercase for registered names and hexadecimal addresses for the sake of
> uniformity, while only using uppercase letters for percent-encodings.


And that's what the current implementation does. :)

> - Since the withers expect well encoded components does it means that it
> is the same for the constructor. What is
>
> the expected result for the following code ?
>
> ```php
>
> $uri = new Uri\Rfc3986\Uri("https://example,com/?foo[]=1&foo[]=2"; 
> <https://example,com/?foo[]=1&foo[]=2>);
> ```
>
> Should the above trigger an exception because the query component contain 
> invalid characters or
> is it acceptable ? Asking because currently our dear old parse_url does not 
> fail on this and
> probably most PHP developers expect this not to fail.
>
> IMHO I am in favor of it failing to get a consistent experience when using 
> the class because
> otherwse you introduce an inconsistency between the constructor behaviour and 
> the rest of the class
> API.
>
>
Yes, generally, creation or any mutation of Uri\Rfc3986\Uri fails when the
URI is invalid, exactly in order to offer a consistent experience.

Regards,
Máté

>

Reply via email to