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