@@ -47,8 +47,8 @@ zend_class_entry *php_uri_ce_whatwg_url_validation_error;
4747static zend_object_handlers object_handlers_rfc3986_uri ;
4848static zend_object_handlers object_handlers_whatwg_uri ;
4949
50- typedef bool (* php_uri_string_component_validator )(const zend_string * component );
51- typedef bool (* php_uri_long_component_validator )(zend_long component );
50+ typedef bool (* php_uri_component_validator_string )(const zend_string * component );
51+ typedef bool (* php_uri_component_validator_long )(zend_long component );
5252
5353static const zend_module_dep uri_deps [] = {
5454 ZEND_MOD_REQUIRED ("lexbor" )
@@ -57,6 +57,14 @@ static const zend_module_dep uri_deps[] = {
5757
5858static zend_array uri_parsers ;
5959
60+ #define Z_RFC3986_URI_PROP_SCHEME_P (zv ) OBJ_PROP_NUM(Z_OBJ_P(zv), 0)
61+ #define Z_RFC3986_URI_PROP_USERINFO_P (zv ) OBJ_PROP_NUM(Z_OBJ_P(zv), 1)
62+ #define Z_RFC3986_URI_PROP_HOST_P (zv ) OBJ_PROP_NUM(Z_OBJ_P(zv), 2)
63+ #define Z_RFC3986_URI_PROP_PORT_P (zv ) OBJ_PROP_NUM(Z_OBJ_P(zv), 3)
64+ #define Z_RFC3986_URI_PROP_PATH_P (zv ) OBJ_PROP_NUM(Z_OBJ_P(zv), 4)
65+ #define Z_RFC3986_URI_PROP_QUERY_P (zv ) OBJ_PROP_NUM(Z_OBJ_P(zv), 5)
66+ #define Z_RFC3986_URI_PROP_FRAGMENT_P (zv ) OBJ_PROP_NUM(Z_OBJ_P(zv), 6)
67+
6068static HashTable * uri_get_debug_properties (php_uri_object * object )
6169{
6270 const HashTable * std_properties = zend_std_get_properties (& object -> std );
@@ -1057,19 +1065,20 @@ PHP_METHOD(Uri_Rfc3986_UriBuilder, reset)
10571065{
10581066 ZEND_PARSE_PARAMETERS_NONE ();
10591067
1060- zend_update_property_null (php_uri_ce_rfc3986_uri_builder , Z_OBJ_P (ZEND_THIS ), ZEND_STRL ("scheme "));
1061- zend_update_property_null (php_uri_ce_rfc3986_uri_builder , Z_OBJ_P (ZEND_THIS ), ZEND_STRL ("userinfo "));
1062- zend_update_property_null (php_uri_ce_rfc3986_uri_builder , Z_OBJ_P (ZEND_THIS ), ZEND_STRL ("host "));
1063- zend_update_property_stringl (php_uri_ce_rfc3986_uri_builder , Z_OBJ_P (ZEND_THIS ), ZEND_STRL ("path "), "", 0 );
1064- zend_update_property_null (php_uri_ce_rfc3986_uri_builder , Z_OBJ_P (ZEND_THIS ), ZEND_STRL ("query "));
1065- zend_update_property_null (php_uri_ce_rfc3986_uri_builder , Z_OBJ_P (ZEND_THIS ), ZEND_STRL ("fragment "));
1068+ ZVAL_NULL (Z_RFC3986_URI_PROP_SCHEME_P (ZEND_THIS ));
1069+ ZVAL_NULL (Z_RFC3986_URI_PROP_USERINFO_P (ZEND_THIS ));
1070+ ZVAL_NULL (Z_RFC3986_URI_PROP_HOST_P (ZEND_THIS ));
1071+ ZVAL_NULL (Z_RFC3986_URI_PROP_PORT_P (ZEND_THIS ));
1072+ ZVAL_EMPTY_STRING (Z_RFC3986_URI_PROP_PATH_P (ZEND_THIS ));
1073+ ZVAL_NULL (Z_RFC3986_URI_PROP_QUERY_P (ZEND_THIS ));
1074+ ZVAL_NULL (Z_RFC3986_URI_PROP_FRAGMENT_P (ZEND_THIS ));
10661075
10671076 RETVAL_COPY (ZEND_THIS );
10681077}
10691078
10701079ZEND_ATTRIBUTE_NONNULL static void php_uri_builder_set_component_string (
10711080 INTERNAL_FUNCTION_PARAMETERS , const char * name , size_t name_length ,
1072- const php_uri_string_component_validator validator
1081+ const php_uri_component_validator_string validator
10731082) {
10741083 zend_string * component ;
10751084
@@ -1089,7 +1098,7 @@ ZEND_ATTRIBUTE_NONNULL static void php_uri_builder_set_component_string(
10891098
10901099ZEND_ATTRIBUTE_NONNULL static void php_uri_builder_set_component_string_or_null (
10911100 INTERNAL_FUNCTION_PARAMETERS , const char * name , size_t name_length ,
1092- const php_uri_string_component_validator validator
1101+ const php_uri_component_validator_string validator
10931102) {
10941103 zend_string * component ;
10951104
@@ -1113,7 +1122,7 @@ ZEND_ATTRIBUTE_NONNULL static void php_uri_builder_set_component_string_or_null(
11131122
11141123ZEND_ATTRIBUTE_NONNULL_ARGS (1 ) static void php_uri_builder_set_component_long_or_null (
11151124 INTERNAL_FUNCTION_PARAMETERS , const char * name , size_t name_length ,
1116- const php_uri_long_component_validator validator
1125+ const php_uri_component_validator_long validator
11171126) {
11181127 zend_long component ;
11191128 bool component_is_null ;
@@ -1208,16 +1217,13 @@ PHP_METHOD(Uri_Rfc3986_UriBuilder, build)
12081217 Z_PARAM_OBJECT_OF_CLASS_OR_NULL (base_url , php_uri_ce_rfc3986_uri )
12091218 ZEND_PARSE_PARAMETERS_END ();
12101219
1211- zend_object * obj = Z_OBJ_P (ZEND_THIS );
1212- zval tmp ;
1213-
1214- const zval * scheme = zend_read_property (obj -> ce , obj , ZEND_STRL ("scheme" ), false, & tmp );
1215- const zval * userinfo = zend_read_property (obj -> ce , obj , ZEND_STRL ("userinfo" ), false, & tmp );
1216- const zval * host = zend_read_property (obj -> ce , obj , ZEND_STRL ("host" ), false, & tmp );
1217- const zval * port = zend_read_property (obj -> ce , obj , ZEND_STRL ("port" ), false, & tmp );
1218- const zval * path = zend_read_property (obj -> ce , obj , ZEND_STRL ("path" ), false, & tmp );
1219- const zval * query = zend_read_property (obj -> ce , obj , ZEND_STRL ("query" ), false, & tmp );
1220- const zval * fragment = zend_read_property (obj -> ce , obj , ZEND_STRL ("fragment" ), false, & tmp );
1220+ const zval * scheme = Z_RFC3986_URI_PROP_SCHEME_P (ZEND_THIS );
1221+ const zval * userinfo = Z_RFC3986_URI_PROP_USERINFO_P (ZEND_THIS );
1222+ const zval * host = Z_RFC3986_URI_PROP_HOST_P (ZEND_THIS );
1223+ const zval * port = Z_RFC3986_URI_PROP_PORT_P (ZEND_THIS );
1224+ const zval * path = Z_RFC3986_URI_PROP_PATH_P (ZEND_THIS );
1225+ const zval * query = Z_RFC3986_URI_PROP_QUERY_P (ZEND_THIS );
1226+ const zval * fragment = Z_RFC3986_URI_PROP_FRAGMENT_P (ZEND_THIS );
12211227
12221228 zend_string * uri_str = php_uri_parser_rfc3986_recompose_from_zval (scheme , userinfo , host , port , path , query , fragment );
12231229 if (uri_str == NULL ) {
0 commit comments