Hi

Am 2026-04-15 22:04, schrieb Larry Garfield:
For host type detection, what does a null return signify? UrlHostType includes an Empty case, which I'd assume would be used in that situation. And I'd rather have an Empty case on UriHostType as well rather than null, unless someone can make a good argument for using null instead...

An empty host is semantically different from a missing host.

You can check that with the existing functionality in PHP 8.5, where `getHost()` is `?string` for both RFC 3986 and WHATWG URL in accordance with the respective standards. If `getHostType()` will return `null` if `getHost()` returns `null`. The cases of the Ur[il]HostType enums in the featured RFC are also pulled straight from the respective specifications.

LeadingSlashPolicy::AddForNonEmtpyRelative is... a mouthful. Self-documenting is fine, but as the example demonstrates it quickly creates super long lines. That could be a problem in, say, a match() statement, inside a method, where with that enum value as a case you'd be more than halfway across the screen before you get to the executable code for that case. Is there no way to make that whole thing shorter?

FYI: I've also had little time for this RFC, but I've started discussing spinning off the “path segment” part of the RFC into a dedicated RFC with Mate off-list a few days ago, similarly to how the query parameters part has been spun off because it has become too complicated for a bulk RFC.

I'm not sure how I feel about object methods on the enum. That would be something like:

use Uri\Rfc3986\PercentEncoder;

PercentEncoder::Path->encode($someval);

Right? […]

Yes.

use Uri\Rfc3986\encode;

encode($someval, PercentEncoder::Path);

Is about the same length, and with PFA easily pre-configurable, and closer to what is typically seen in the wild today.

FWIW: The enum would also be “pre-configurable” with https://wiki.php.net/rfc/partial_function_application_this. Arnaud and I are working on a more general version of that RFC based on Bob's feedback, but will need to figure out the latest edge cases before proposing it.

Best regards
Tim Düsterhus

Reply via email to