@@ -153,6 +153,7 @@ static const zend_function_entry date_funcs_date[] = {
153
153
PHP_ME (DateTime , __wakeup , arginfo_class_DateTimeInterface___wakeup , ZEND_ACC_PUBLIC )
154
154
PHP_ME (DateTime , __set_state , arginfo_class_DateTime___set_state , ZEND_ACC_PUBLIC |ZEND_ACC_STATIC )
155
155
PHP_ME (DateTime , createFromImmutable , arginfo_class_DateTime_createFromImmutable , ZEND_ACC_PUBLIC |ZEND_ACC_STATIC )
156
+ PHP_ME (DateTime , createFromInterface , arginfo_class_DateTime_createFromInterface , ZEND_ACC_PUBLIC |ZEND_ACC_STATIC )
156
157
PHP_ME_MAPPING (createFromFormat , date_create_from_format , arginfo_class_DateTime_createFromFormat , ZEND_ACC_PUBLIC |ZEND_ACC_STATIC )
157
158
PHP_ME_MAPPING (getLastErrors , date_get_last_errors , arginfo_class_DateTime_getLastErrors , ZEND_ACC_PUBLIC |ZEND_ACC_STATIC )
158
159
PHP_ME_MAPPING (format , date_format , arginfo_class_DateTimeInterface_format , 0 )
@@ -191,6 +192,7 @@ static const zend_function_entry date_funcs_immutable[] = {
191
192
PHP_ME (DateTimeImmutable , setISODate , arginfo_class_DateTimeImmutable_setISODate , 0 )
192
193
PHP_ME (DateTimeImmutable , setTimestamp , arginfo_class_DateTimeImmutable_setTimestamp , 0 )
193
194
PHP_ME (DateTimeImmutable , createFromMutable , arginfo_class_DateTimeImmutable_createFromMutable , ZEND_ACC_PUBLIC |ZEND_ACC_STATIC )
195
+ PHP_ME (DateTimeImmutable , createFromInterface , arginfo_class_DateTimeImmutable_createFromInterface , ZEND_ACC_PUBLIC |ZEND_ACC_STATIC )
194
196
PHP_FE_END
195
197
};
196
198
@@ -2545,6 +2547,27 @@ PHP_METHOD(DateTime, createFromImmutable)
2545
2547
}
2546
2548
/* }}} */
2547
2549
2550
+ /* {{{ proto DateTime::createFromInterface(DateTimeInterface object)
2551
+ Creates new DateTime object from an existing DateTimeInterface object.
2552
+ */
2553
+ PHP_METHOD (DateTime , createFromInterface )
2554
+ {
2555
+ zval * datetimeinterface_object = NULL;
2556
+ php_date_obj * new_obj = NULL;
2557
+ php_date_obj * old_obj = NULL;
2558
+
2559
+ ZEND_PARSE_PARAMETERS_START (1 , 1 )
2560
+ Z_PARAM_OBJECT_OF_CLASS (datetimeinterface_object , date_ce_interface )
2561
+ ZEND_PARSE_PARAMETERS_END ();
2562
+
2563
+ php_date_instantiate (date_ce_date , return_value );
2564
+ old_obj = Z_PHPDATE_P (datetimeinterface_object );
2565
+ new_obj = Z_PHPDATE_P (return_value );
2566
+
2567
+ new_obj -> time = timelib_time_clone (old_obj - > time );
2568
+ }
2569
+ /* }}} */
2570
+
2548
2571
/* {{{ proto DateTimeImmutable::createFromMutable(DateTime object)
2549
2572
Creates new DateTimeImmutable object from an existing mutable DateTime object.
2550
2573
*/
@@ -2566,6 +2589,27 @@ PHP_METHOD(DateTimeImmutable, createFromMutable)
2566
2589
}
2567
2590
/* }}} */
2568
2591
2592
+ /* {{{ proto DateTimeImmutable::createFromInterface(DateTimeInterface object)
2593
+ Creates new DateTimeImmutable object from an existing DateTimeInterface object.
2594
+ */
2595
+ PHP_METHOD (DateTimeImmutable , createFromInterface )
2596
+ {
2597
+ zval * datetimeinterface_object = NULL;
2598
+ php_date_obj * new_obj = NULL;
2599
+ php_date_obj * old_obj = NULL;
2600
+
2601
+ ZEND_PARSE_PARAMETERS_START (1 , 1 )
2602
+ Z_PARAM_OBJECT_OF_CLASS (datetimeinterface_object , date_ce_interface )
2603
+ ZEND_PARSE_PARAMETERS_END ();
2604
+
2605
+ php_date_instantiate (date_ce_immutable , return_value );
2606
+ old_obj = Z_PHPDATE_P (datetimeinterface_object );
2607
+ new_obj = Z_PHPDATE_P (return_value );
2608
+
2609
+ new_obj -> time = timelib_time_clone (old_obj - > time );
2610
+ }
2611
+ /* }}} */
2612
+
2569
2613
static int php_date_initialize_from_hash (php_date_obj * * dateobj , HashTable * myht )
2570
2614
{
2571
2615
zval * z_date ;
0 commit comments