@@ -500,7 +500,12 @@ PHP_METHOD(Uri_Rfc3986_Uri, getRawScheme)
500
500
uri_read_component (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_PROPERTY_NAME_SCHEME , URI_COMPONENT_READ_RAW );
501
501
}
502
502
503
- static void read_uriparser_userinfo (INTERNAL_FUNCTION_PARAMETERS , uri_component_read_mode_t read_mode )
503
+ PHP_METHOD (Uri_Rfc3986_Uri , withScheme )
504
+ {
505
+ uri_write_component_str_or_null (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_PROPERTY_NAME_SCHEME );
506
+ }
507
+
508
+ static void rfc3986_userinfo_read (INTERNAL_FUNCTION_PARAMETERS , uri_component_read_mode_t read_mode )
504
509
{
505
510
ZEND_PARSE_PARAMETERS_NONE ();
506
511
@@ -515,12 +520,48 @@ static void read_uriparser_userinfo(INTERNAL_FUNCTION_PARAMETERS, uri_component_
515
520
516
521
PHP_METHOD (Uri_Rfc3986_Uri , getUserInfo )
517
522
{
518
- read_uriparser_userinfo (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_COMPONENT_READ_NORMALIZED_ASCII );
523
+ rfc3986_userinfo_read (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_COMPONENT_READ_NORMALIZED_ASCII );
519
524
}
520
525
521
526
PHP_METHOD (Uri_Rfc3986_Uri , getRawUserInfo )
522
527
{
523
- read_uriparser_userinfo (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_COMPONENT_READ_RAW );
528
+ rfc3986_userinfo_read (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_COMPONENT_READ_RAW );
529
+ }
530
+
531
+ PHP_METHOD (Uri_Rfc3986_Uri , withUserInfo )
532
+ {
533
+ zend_string * value ;
534
+
535
+ ZEND_PARSE_PARAMETERS_START (1 , 1 )
536
+ Z_PARAM_PATH_STR_OR_NULL (value )
537
+ ZEND_PARSE_PARAMETERS_END ();
538
+
539
+ zval zv ;
540
+ if (value == NULL ) {
541
+ ZVAL_NULL (& zv );
542
+ } else {
543
+ ZVAL_STR (& zv , value );
544
+ }
545
+
546
+ uri_internal_t * internal_uri = Z_URI_INTERNAL_P (ZEND_THIS );
547
+ URI_ASSERT_INITIALIZATION (internal_uri );
548
+
549
+ zend_object * new_object = uri_clone_obj_handler (Z_OBJ_P (ZEND_THIS ));
550
+ ZEND_ASSERT (new_object != NULL );
551
+
552
+ uri_internal_t * new_internal_uri = uri_internal_from_obj (new_object );
553
+ URI_ASSERT_INITIALIZATION (new_internal_uri );
554
+
555
+ zval errors ;
556
+ ZVAL_UNDEF (& errors );
557
+ if (UNEXPECTED (php_uri_parser_rfc3986_userinfo_write (new_internal_uri , & zv , NULL ) == FAILURE )) {
558
+ zval_ptr_dtor (& errors );
559
+ zend_object_release (new_object );
560
+ RETURN_THROWS ();
561
+ }
562
+
563
+ ZEND_ASSERT (Z_ISUNDEF (errors ));
564
+ RETVAL_OBJ (new_object );
524
565
}
525
566
526
567
PHP_METHOD (Uri_Rfc3986_Uri , getUsername )
@@ -553,11 +594,21 @@ PHP_METHOD(Uri_Rfc3986_Uri, getRawHost)
553
594
uri_read_component (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_PROPERTY_NAME_HOST , URI_COMPONENT_READ_RAW );
554
595
}
555
596
597
+ PHP_METHOD (Uri_Rfc3986_Uri , withHost )
598
+ {
599
+ uri_write_component_str_or_null (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_PROPERTY_NAME_HOST );
600
+ }
601
+
556
602
PHP_METHOD (Uri_Rfc3986_Uri , getPort )
557
603
{
558
604
uri_read_component (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_PROPERTY_NAME_PORT , URI_COMPONENT_READ_NORMALIZED_ASCII );
559
605
}
560
606
607
+ PHP_METHOD (Uri_Rfc3986_Uri , withPort )
608
+ {
609
+ uri_write_component_long_or_null (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_PROPERTY_NAME_PORT );
610
+ }
611
+
561
612
PHP_METHOD (Uri_Rfc3986_Uri , getPath )
562
613
{
563
614
uri_read_component (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_PROPERTY_NAME_PATH , URI_COMPONENT_READ_NORMALIZED_ASCII );
@@ -568,6 +619,11 @@ PHP_METHOD(Uri_Rfc3986_Uri, getRawPath)
568
619
uri_read_component (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_PROPERTY_NAME_PATH , URI_COMPONENT_READ_RAW );
569
620
}
570
621
622
+ PHP_METHOD (Uri_Rfc3986_Uri , withPath )
623
+ {
624
+ uri_write_component_str (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_PROPERTY_NAME_PATH );
625
+ }
626
+
571
627
PHP_METHOD (Uri_Rfc3986_Uri , getQuery )
572
628
{
573
629
uri_read_component (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_PROPERTY_NAME_QUERY , URI_COMPONENT_READ_NORMALIZED_ASCII );
@@ -578,6 +634,11 @@ PHP_METHOD(Uri_Rfc3986_Uri, getRawQuery)
578
634
uri_read_component (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_PROPERTY_NAME_QUERY , URI_COMPONENT_READ_RAW );
579
635
}
580
636
637
+ PHP_METHOD (Uri_Rfc3986_Uri , withQuery )
638
+ {
639
+ uri_write_component_str_or_null (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_PROPERTY_NAME_QUERY );
640
+ }
641
+
581
642
PHP_METHOD (Uri_Rfc3986_Uri , getFragment )
582
643
{
583
644
uri_read_component (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_PROPERTY_NAME_FRAGMENT , URI_COMPONENT_READ_NORMALIZED_ASCII );
@@ -588,6 +649,11 @@ PHP_METHOD(Uri_Rfc3986_Uri, getRawFragment)
588
649
uri_read_component (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_PROPERTY_NAME_FRAGMENT , URI_COMPONENT_READ_RAW );
589
650
}
590
651
652
+ PHP_METHOD (Uri_Rfc3986_Uri , withFragment )
653
+ {
654
+ uri_write_component_str_or_null (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_PROPERTY_NAME_FRAGMENT );
655
+ }
656
+
591
657
static void throw_cannot_recompose_uri_to_string (zend_object * object )
592
658
{
593
659
zend_throw_exception_ex (NULL , 0 , "Cannot recompose %s to a string" , ZSTR_VAL (object -> ce -> name ));
@@ -833,29 +899,9 @@ PHP_METHOD(Uri_WhatWg_Url, getUnicodeHost)
833
899
uri_read_component (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_PROPERTY_NAME_HOST , URI_COMPONENT_READ_NORMALIZED_UNICODE );
834
900
}
835
901
836
- PHP_METHOD (Uri_WhatWg_Url , withHost )
837
- {
838
- uri_write_component_str_or_null (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_PROPERTY_NAME_HOST );
839
- }
840
-
841
- PHP_METHOD (Uri_WhatWg_Url , withPort )
842
- {
843
- uri_write_component_long_or_null (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_PROPERTY_NAME_PORT );
844
- }
845
-
846
- PHP_METHOD (Uri_WhatWg_Url , withPath )
902
+ PHP_METHOD (Uri_WhatWg_Url , getFragment )
847
903
{
848
- uri_write_component_str (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_PROPERTY_NAME_PATH );
849
- }
850
-
851
- PHP_METHOD (Uri_WhatWg_Url , withQuery )
852
- {
853
- uri_write_component_str_or_null (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_PROPERTY_NAME_QUERY );
854
- }
855
-
856
- PHP_METHOD (Uri_WhatWg_Url , withFragment )
857
- {
858
- uri_write_component_str_or_null (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_PROPERTY_NAME_FRAGMENT );
904
+ uri_read_component (INTERNAL_FUNCTION_PARAM_PASSTHRU , URI_PROPERTY_NAME_FRAGMENT , URI_COMPONENT_READ_NORMALIZED_UNICODE );
859
905
}
860
906
861
907
PHP_METHOD (Uri_WhatWg_Url , equals )
0 commit comments