On 28/06/2024 22:06, Máté Kocsis wrote:
> Hi Everyone,
>
> I've been working on a new RFC for a while now, and time has come to present it to a wider
> audience.
>
> Last year, I learnt that PHP doesn't have built-in support for parsing URLs according to
> any well established standards (RFC 1738 or the WHATWG URL living standard), since the parse_url()
> function is optimized for performance instead of correctness.
>
> In order to improve compatibility with external tools consuming URLs (like browsers), my new
> RFC would add a WHATWG compliant URL parser functionality to the standard library. The API itself is
> not final by any means, the RFC only represents how I imagined it first.
>
> You can find the RFC at the following link: https://wiki.php.net/rfc/url_parsing_api <https://wiki.php.net/rfc/url_parsing_api>
>
> Regards,
> Máté
>
Hi Máté
+1 from me, I'm all for modern web-related APIs as you know.
Some questions/remarks:
- Why did you choose UrlParser to be a "static" class? Right now it's just a fancy
namespace.
I can see the point of having a UrlParser class where you can e.g. configure it with which URL
standard you want,
but as it is now there is no such capability.
- It's a bit of a shame that the PSR interface treats queries as strings.
In Javascript we have the URLSearchParams class that we can use as a key-value storage for query
parameters.
This Javascript class also handles escaping them nicely.
- Why is UrlComponent a backed enum?
- A nit: We didn't bundle the entire Lexbor engine, only select parts of it. Just thought
I'd make it clear.
- About edge cases: e.g. what happens if I call the Url constructor and leave every string field
empty?
Overall seems good.
Kind regards
Niels