Implement "Followup improvements for ext/uri" RFC - RFC 3986 URI building#22173
Conversation
TimWolla
left a comment
There was a problem hiding this comment.
I'm not yet sure how I feel about the manual validation happening during recomposition. I'd like to take a second look later.
|
I fixed a few suggestions, thank you very much! I'll continue tomorrow with the rest |
4ccd652 to
3048323
Compare
| char buf[MAX_LENGTH_OF_LONG + 1]; | ||
| const char *res = zend_print_long_to_buf(buf + sizeof(buf) - 1, port); | ||
|
|
||
| const bool well_formed = uriIsWellFormedPortA(res, res + strlen(res)); |
There was a problem hiding this comment.
Should also work:
| const bool well_formed = uriIsWellFormedPortA(res, res + strlen(res)); | |
| const bool well_formed = uriIsWellFormedPortA(res, buf + sizeof(buf) - 1 - res); |
There was a problem hiding this comment.
Hm, very clever, but the current approach seems much more straightforward for me
a3ec042 to
0bf64ff
Compare
TimWolla
left a comment
There was a problem hiding this comment.
I wonder if all success tests should reparse the resulting URL for extra safety. So basically add:
var_dump($uri->equals(new Uri\Rfc3986\Uri($uri->toRawString())));
at the end of every test (it should always be bool(true)).
I looked at all the tests for now. Did not yet take a full look at the implementation.
| const char *p = Z_STRVAL_P(path); | ||
| while (*p != '\0' && *p != '/') { | ||
| if (*p == ':') { | ||
| zend_throw_exception(php_uri_ce_invalid_uri_exception, "The path must not begin with \":\" when the URI doesn't contain a scheme", 0); |
There was a problem hiding this comment.
| zend_throw_exception(php_uri_ce_invalid_uri_exception, "The path must not begin with \":\" when the URI doesn't contain a scheme", 0); | |
| zend_throw_exception(php_uri_ce_invalid_uri_exception, "The path must not begin with \":\" when the URI does not contain a scheme", 0); |
Using contractions is colloquial (same applies to the other error message.
/cc @Girgias for error message suggestions.
0bf64ff to
7f1c843
Compare
[skip ci]
RFC: https://wiki.php.net/rfc/uri_followup#uri_building