diff --git a/ext/date/php_date.c b/ext/date/php_date.c index 96c37092511f..fc6454e1eabd 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -2186,10 +2186,23 @@ static void date_interval_object_to_hash(php_interval_obj *intervalobj, HashTabl /* Records whether this is a special relative interval that needs to be recreated from a string */ if (intervalobj->from_string) { + ZVAL_NULL(&zv); \ + zend_hash_str_update(props, "y", sizeof("y")-1, &zv); + zend_hash_str_update(props, "m", sizeof("m")-1, &zv); + zend_hash_str_update(props, "d", sizeof("d")-1, &zv); + zend_hash_str_update(props, "h", sizeof("h")-1, &zv); + zend_hash_str_update(props, "i", sizeof("i")-1, &zv); + zend_hash_str_update(props, "s", sizeof("s")-1, &zv); + zend_hash_str_update(props, "f", sizeof("f")-1, &zv); + zend_hash_str_update(props, "invert", sizeof("invert")-1, &zv); + + ZVAL_FALSE(&zv); + zend_hash_str_update(props, "days", sizeof("days")-1, &zv); ZVAL_BOOL(&zv, (bool)intervalobj->from_string); zend_hash_str_update(props, "from_string", strlen("from_string"), &zv); ZVAL_STR_COPY(&zv, intervalobj->date_string); zend_hash_str_update(props, "date_string", strlen("date_string"), &zv); + return; } @@ -2212,8 +2225,10 @@ static void date_interval_object_to_hash(php_interval_obj *intervalobj, HashTabl ZVAL_FALSE(&zv); zend_hash_str_update(props, "days", sizeof("days")-1, &zv); } - ZVAL_BOOL(&zv, (bool)intervalobj->from_string); + ZVAL_FALSE(&zv); zend_hash_str_update(props, "from_string", strlen("from_string"), &zv); + ZVAL_NULL(&zv); + zend_hash_str_update(props, "date_string", strlen("date_string"), &zv); #undef PHP_DATE_INTERVAL_ADD_PROPERTY } @@ -4384,6 +4399,8 @@ static zval *date_interval_get_property_ptr_ptr(zend_object *object, zend_string zend_string_equals_literal(name, "s") || zend_string_equals_literal(name, "f") || zend_string_equals_literal(name, "days") || + zend_string_equals_literal(name, "from_string") || + zend_string_equals_literal(name, "date_string") || zend_string_equals_literal(name, "invert") ) { /* Fallback to read_property. */ ret = NULL; diff --git a/ext/date/php_date.stub.php b/ext/date/php_date.stub.php index e0717fa7f4c8..9f1dad617475 100644 --- a/ext/date/php_date.stub.php +++ b/ext/date/php_date.stub.php @@ -662,6 +662,18 @@ public static function __set_state(array $array): DateTimeZone {} class DateInterval { + public ?int $y; + public ?int $m; + public ?int $d; + public ?int $h; + public ?int $i; + public ?int $s; + public ?float $f; + public ?int $invert; + public int|false $days; + public bool $from_string; + public ?string $date_string; + public function __construct(string $duration) {} /** diff --git a/ext/date/php_date_arginfo.h b/ext/date/php_date_arginfo.h index bbede1f39596..608c1f24af68 100644 --- a/ext/date/php_date_arginfo.h +++ b/ext/date/php_date_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 0f204ac6646be79b515189a384fce9bcea9a4f42 */ + * Stub hash: a02e90d2aff0b9a7bc44e15e0ba5e29726750a0e */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_strtotime, 0, 1, MAY_BE_LONG|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, datetime, IS_STRING, 0) @@ -1067,6 +1067,72 @@ static zend_class_entry *register_class_DateInterval(void) INIT_CLASS_ENTRY(ce, "DateInterval", class_DateInterval_methods); class_entry = zend_register_internal_class_ex(&ce, NULL); + zval property_y_default_value; + ZVAL_UNDEF(&property_y_default_value); + zend_string *property_y_name = zend_string_init("y", sizeof("y") - 1, 1); + zend_declare_typed_property(class_entry, property_y_name, &property_y_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG|MAY_BE_NULL)); + zend_string_release(property_y_name); + + zval property_m_default_value; + ZVAL_UNDEF(&property_m_default_value); + zend_string *property_m_name = zend_string_init("m", sizeof("m") - 1, 1); + zend_declare_typed_property(class_entry, property_m_name, &property_m_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG|MAY_BE_NULL)); + zend_string_release(property_m_name); + + zval property_d_default_value; + ZVAL_UNDEF(&property_d_default_value); + zend_string *property_d_name = zend_string_init("d", sizeof("d") - 1, 1); + zend_declare_typed_property(class_entry, property_d_name, &property_d_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG|MAY_BE_NULL)); + zend_string_release(property_d_name); + + zval property_h_default_value; + ZVAL_UNDEF(&property_h_default_value); + zend_string *property_h_name = zend_string_init("h", sizeof("h") - 1, 1); + zend_declare_typed_property(class_entry, property_h_name, &property_h_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG|MAY_BE_NULL)); + zend_string_release(property_h_name); + + zval property_i_default_value; + ZVAL_UNDEF(&property_i_default_value); + zend_string *property_i_name = zend_string_init("i", sizeof("i") - 1, 1); + zend_declare_typed_property(class_entry, property_i_name, &property_i_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG|MAY_BE_NULL)); + zend_string_release(property_i_name); + + zval property_s_default_value; + ZVAL_UNDEF(&property_s_default_value); + zend_string *property_s_name = zend_string_init("s", sizeof("s") - 1, 1); + zend_declare_typed_property(class_entry, property_s_name, &property_s_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG|MAY_BE_NULL)); + zend_string_release(property_s_name); + + zval property_f_default_value; + ZVAL_UNDEF(&property_f_default_value); + zend_string *property_f_name = zend_string_init("f", sizeof("f") - 1, 1); + zend_declare_typed_property(class_entry, property_f_name, &property_f_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_DOUBLE|MAY_BE_NULL)); + zend_string_release(property_f_name); + + zval property_invert_default_value; + ZVAL_UNDEF(&property_invert_default_value); + zend_string *property_invert_name = zend_string_init("invert", sizeof("invert") - 1, 1); + zend_declare_typed_property(class_entry, property_invert_name, &property_invert_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG|MAY_BE_NULL)); + zend_string_release(property_invert_name); + + zval property_days_default_value; + ZVAL_UNDEF(&property_days_default_value); + zend_string *property_days_name = zend_string_init("days", sizeof("days") - 1, 1); + zend_declare_typed_property(class_entry, property_days_name, &property_days_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG|MAY_BE_FALSE)); + zend_string_release(property_days_name); + + zval property_from_string_default_value; + ZVAL_UNDEF(&property_from_string_default_value); + zend_string *property_from_string_name = zend_string_init("from_string", sizeof("from_string") - 1, 1); + zend_declare_typed_property(class_entry, property_from_string_name, &property_from_string_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_BOOL)); + zend_string_release(property_from_string_name); + + zval property_date_string_default_value; + ZVAL_UNDEF(&property_date_string_default_value); + zend_string *property_date_string_name = zend_string_init("date_string", sizeof("date_string") - 1, 1); + zend_declare_typed_property(class_entry, property_date_string_name, &property_date_string_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); + zend_string_release(property_date_string_name); + return class_entry; } diff --git a/ext/date/tests/DateInterval_serialize-001.phpt b/ext/date/tests/DateInterval_serialize-001.phpt index cad33185cf9b..12a14d86f21f 100644 --- a/ext/date/tests/DateInterval_serialize-001.phpt +++ b/ext/date/tests/DateInterval_serialize-001.phpt @@ -26,7 +26,7 @@ var_dump($now->sub($e)); ?> --EXPECTF-- Original object: -object(DateInterval)#1 (10) { +object(DateInterval)#1 (11) { ["y"]=> int(2) ["m"]=> @@ -47,15 +47,17 @@ object(DateInterval)#1 (10) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } Serialised object: -string(164) "O:12:"DateInterval":10:{s:1:"y";i:2;s:1:"m";i:0;s:1:"d";i:4;s:1:"h";i:6;s:1:"i";i:8;s:1:"s";i:0;s:1:"f";d:0;s:6:"invert";i:0;s:4:"days";b:0;s:11:"from_string";b:0;}" +string(185) "O:12:"DateInterval":11:{s:1:"y";i:2;s:1:"m";i:0;s:1:"d";i:4;s:1:"h";i:6;s:1:"i";i:8;s:1:"s";i:0;s:1:"f";d:0;s:6:"invert";i:0;s:4:"days";b:0;s:11:"from_string";b:0;s:11:"date_string";N;}" Unserialised object: -object(DateInterval)#2 (10) { +object(DateInterval)#2 (11) { ["y"]=> int(2) ["m"]=> @@ -76,6 +78,8 @@ object(DateInterval)#2 (10) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } @@ -101,6 +105,8 @@ array(%d) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } diff --git a/ext/date/tests/DateInterval_serialize-002.phpt b/ext/date/tests/DateInterval_serialize-002.phpt index d21e02245e69..d8bfbf410705 100644 --- a/ext/date/tests/DateInterval_serialize-002.phpt +++ b/ext/date/tests/DateInterval_serialize-002.phpt @@ -45,7 +45,7 @@ var_dump($now->sub($e)); ?> --EXPECTF-- Original object: -object(DateInterval)#3 (10) { +object(DateInterval)#3 (11) { ["y"]=> int(43) ["m"]=> @@ -66,15 +66,17 @@ object(DateInterval)#3 (10) { int(15820) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } Serialised object: -string(172) "O:12:"DateInterval":10:{s:1:"y";i:43;s:1:"m";i:3;s:1:"d";i:24;s:1:"h";i:1;s:1:"i";i:12;s:1:"s";i:27;s:1:"f";d:0;s:6:"invert";i:0;s:4:"days";i:15820;s:11:"from_string";b:0;}" +string(193) "O:12:"DateInterval":11:{s:1:"y";i:43;s:1:"m";i:3;s:1:"d";i:24;s:1:"h";i:1;s:1:"i";i:12;s:1:"s";i:27;s:1:"f";d:0;s:6:"invert";i:0;s:4:"days";i:15820;s:11:"from_string";b:0;s:11:"date_string";N;}" Unserialised object: -object(DateInterval)#4 (10) { +object(DateInterval)#4 (11) { ["y"]=> int(43) ["m"]=> @@ -95,6 +97,8 @@ object(DateInterval)#4 (10) { int(15820) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } @@ -120,11 +124,13 @@ array(%d) { int(15820) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } Calling __unserialize manually: -object(DateInterval)#5 (10) { +object(DateInterval)#5 (11) { ["y"]=> int(43) ["m"]=> @@ -145,6 +151,8 @@ object(DateInterval)#5 (10) { int(15820) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } diff --git a/ext/date/tests/DateInterval_serialize-003.phpt b/ext/date/tests/DateInterval_serialize-003.phpt index cc1d9a371bb0..2ddc01a0809d 100644 --- a/ext/date/tests/DateInterval_serialize-003.phpt +++ b/ext/date/tests/DateInterval_serialize-003.phpt @@ -41,6 +41,24 @@ try { --EXPECTF-- Original object: object(DateInterval)#1 (%d) { + ["y"]=> + NULL + ["m"]=> + NULL + ["d"]=> + NULL + ["h"]=> + NULL + ["i"]=> + NULL + ["s"]=> + NULL + ["f"]=> + NULL + ["invert"]=> + NULL + ["days"]=> + bool(false) ["from_string"]=> bool(true) ["date_string"]=> @@ -49,11 +67,29 @@ object(DateInterval)#1 (%d) { Serialised object: -string(%d) "O:12:"DateInterval":2:{s:11:"from_string";b:1;s:11:"date_string";s:%d:"next weekday";}" +string(187) "O:12:"DateInterval":11:{s:1:"y";N;s:1:"m";N;s:1:"d";N;s:1:"h";N;s:1:"i";N;s:1:"s";N;s:1:"f";N;s:6:"invert";N;s:4:"days";b:0;s:11:"from_string";b:1;s:11:"date_string";s:12:"next weekday";}" Unserialised object: -object(DateInterval)#2 (2) { +object(DateInterval)#2 (11) { + ["y"]=> + NULL + ["m"]=> + NULL + ["d"]=> + NULL + ["h"]=> + NULL + ["i"]=> + NULL + ["s"]=> + NULL + ["f"]=> + NULL + ["invert"]=> + NULL + ["days"]=> + bool(false) ["from_string"]=> bool(true) ["date_string"]=> @@ -62,7 +98,25 @@ object(DateInterval)#2 (2) { Calling __serialize manually: -array(2) { +array(11) { + ["y"]=> + NULL + ["m"]=> + NULL + ["d"]=> + NULL + ["h"]=> + NULL + ["i"]=> + NULL + ["s"]=> + NULL + ["f"]=> + NULL + ["invert"]=> + NULL + ["days"]=> + bool(false) ["from_string"]=> bool(true) ["date_string"]=> @@ -71,7 +125,25 @@ array(2) { Calling __unserialize manually: -object(DateInterval)#3 (2) { +object(DateInterval)#3 (11) { + ["y"]=> + NULL + ["m"]=> + NULL + ["d"]=> + NULL + ["h"]=> + NULL + ["i"]=> + NULL + ["s"]=> + NULL + ["f"]=> + NULL + ["invert"]=> + NULL + ["days"]=> + bool(false) ["from_string"]=> bool(true) ["date_string"]=> diff --git a/ext/date/tests/DatePeriod_createFromISO8601String_static_return.phpt b/ext/date/tests/DatePeriod_createFromISO8601String_static_return.phpt index f8b1e1cffe43..568ed5b64858 100644 --- a/ext/date/tests/DatePeriod_createFromISO8601String_static_return.phpt +++ b/ext/date/tests/DatePeriod_createFromISO8601String_static_return.phpt @@ -36,7 +36,7 @@ object(MyDatePeriod)#1 (7) { ["end"]=> NULL ["interval"]=> - object(DateInterval)#3 (10) { + object(DateInterval)#3 (11) { ["y"]=> int(0) ["m"]=> @@ -57,6 +57,8 @@ object(MyDatePeriod)#1 (7) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } ["recurrences"]=> int(5) diff --git a/ext/date/tests/DatePeriod_serialize-001.phpt b/ext/date/tests/DatePeriod_serialize-001.phpt index c30a4eb0ef13..6c166dded1b8 100644 --- a/ext/date/tests/DatePeriod_serialize-001.phpt +++ b/ext/date/tests/DatePeriod_serialize-001.phpt @@ -58,6 +58,8 @@ object(DatePeriod)#%d (%d) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } ["recurrences"]=> int(5) @@ -69,7 +71,7 @@ object(DatePeriod)#%d (%d) { Serialised object: -string(%d) "O:10:"DatePeriod":7:{s:5:"start";O:17:"DateTimeImmutable":3:{s:4:"date";s:26:"2012-07-01 00:00:00.000000";s:13:"timezone_type";i:1;s:8:"timezone";s:6:"+00:00";}s:7:"current";N;s:3:"end";N;s:8:"interval";O:12:"DateInterval":10:{s:1:"y";i:0;s:1:"m";i:0;s:1:"d";i:7;s:1:"h";i:0;s:1:"i";i:0;s:1:"s";i:0;s:1:"f";d:0;s:6:"invert";i:0;s:4:"days";b:0;s:11:"from_string";b:0;}s:11:"recurrences";i:5;s:18:"include_start_date";b:1;s:16:"include_end_date";b:0;}" +string(470) "O:10:"DatePeriod":7:{s:5:"start";O:17:"DateTimeImmutable":3:{s:4:"date";s:26:"2012-07-01 00:00:00.000000";s:13:"timezone_type";i:1;s:8:"timezone";s:6:"+00:00";}s:7:"current";N;s:3:"end";N;s:8:"interval";O:12:"DateInterval":11:{s:1:"y";i:0;s:1:"m";i:0;s:1:"d";i:7;s:1:"h";i:0;s:1:"i";i:0;s:1:"s";i:0;s:1:"f";d:0;s:6:"invert";i:0;s:4:"days";b:0;s:11:"from_string";b:0;s:11:"date_string";N;}s:11:"recurrences";i:5;s:18:"include_start_date";b:1;s:16:"include_end_date";b:0;}" Unserialised object: @@ -109,6 +111,8 @@ object(DatePeriod)#%d (%d) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } ["recurrences"]=> int(5) @@ -156,6 +160,8 @@ array(%d) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } ["recurrences"]=> int(5) diff --git a/ext/date/tests/DatePeriod_serialize-002.phpt b/ext/date/tests/DatePeriod_serialize-002.phpt index d87bcd9a866d..bf48937f5500 100644 --- a/ext/date/tests/DatePeriod_serialize-002.phpt +++ b/ext/date/tests/DatePeriod_serialize-002.phpt @@ -73,6 +73,8 @@ object(DatePeriod)#%d (%d) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } ["recurrences"]=> int(1) @@ -84,7 +86,7 @@ object(DatePeriod)#%d (%d) { Serialised object: -string(%d) "O:10:"DatePeriod":7:{s:5:"start";O:17:"DateTimeImmutable":3:{s:4:"date";s:26:"1978-12-22 09:15:00.000000";s:13:"timezone_type";i:3;s:8:"timezone";s:16:"Europe/Amsterdam";}s:7:"current";N;s:3:"end";O:17:"DateTimeImmutable":3:{s:4:"date";s:26:"2022-04-29 15:51:56.000000";s:13:"timezone_type";i:3;s:8:"timezone";s:13:"Europe/London";}s:8:"interval";O:12:"DateInterval":10:{s:1:"y";i:2;s:1:"m";i:6;s:1:"d";i:0;s:1:"h";i:0;s:1:"i";i:0;s:1:"s";i:0;s:1:"f";d:0;s:6:"invert";i:0;s:4:"days";b:0;s:11:"from_string";b:0;}s:11:"recurrences";i:1;s:18:"include_start_date";b:1;s:16:"include_end_date";b:0;}" +string(614) "O:10:"DatePeriod":7:{s:5:"start";O:17:"DateTimeImmutable":3:{s:4:"date";s:26:"1978-12-22 09:15:00.000000";s:13:"timezone_type";i:3;s:8:"timezone";s:16:"Europe/Amsterdam";}s:7:"current";N;s:3:"end";O:17:"DateTimeImmutable":3:{s:4:"date";s:26:"2022-04-29 15:51:56.000000";s:13:"timezone_type";i:3;s:8:"timezone";s:13:"Europe/London";}s:8:"interval";O:12:"DateInterval":11:{s:1:"y";i:2;s:1:"m";i:6;s:1:"d";i:0;s:1:"h";i:0;s:1:"i";i:0;s:1:"s";i:0;s:1:"f";d:0;s:6:"invert";i:0;s:4:"days";b:0;s:11:"from_string";b:0;s:11:"date_string";N;}s:11:"recurrences";i:1;s:18:"include_start_date";b:1;s:16:"include_end_date";b:0;}" Unserialised object: @@ -131,6 +133,8 @@ object(DatePeriod)#%d (%d) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } ["recurrences"]=> int(1) @@ -185,6 +189,8 @@ array(%d) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } ["recurrences"]=> int(1) diff --git a/ext/date/tests/DatePeriod_serialize-003.phpt b/ext/date/tests/DatePeriod_serialize-003.phpt index af52e5642b41..d09621c3e79f 100644 --- a/ext/date/tests/DatePeriod_serialize-003.phpt +++ b/ext/date/tests/DatePeriod_serialize-003.phpt @@ -73,6 +73,8 @@ object(DatePeriod)#%d (%d) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } ["recurrences"]=> int(0) @@ -84,7 +86,7 @@ object(DatePeriod)#%d (%d) { Serialised object: -string(%d) "O:10:"DatePeriod":7:{s:5:"start";O:17:"DateTimeImmutable":3:{s:4:"date";s:26:"1978-12-22 09:15:00.000000";s:13:"timezone_type";i:3;s:8:"timezone";s:16:"Europe/Amsterdam";}s:7:"current";N;s:3:"end";O:17:"DateTimeImmutable":3:{s:4:"date";s:26:"2022-04-29 15:51:56.000000";s:13:"timezone_type";i:3;s:8:"timezone";s:13:"Europe/London";}s:8:"interval";O:12:"DateInterval":10:{s:1:"y";i:2;s:1:"m";i:6;s:1:"d";i:0;s:1:"h";i:0;s:1:"i";i:0;s:1:"s";i:0;s:1:"f";d:0;s:6:"invert";i:0;s:4:"days";b:0;s:11:"from_string";b:0;}s:11:"recurrences";i:0;s:18:"include_start_date";b:0;s:16:"include_end_date";b:0;}" +string(614) "O:10:"DatePeriod":7:{s:5:"start";O:17:"DateTimeImmutable":3:{s:4:"date";s:26:"1978-12-22 09:15:00.000000";s:13:"timezone_type";i:3;s:8:"timezone";s:16:"Europe/Amsterdam";}s:7:"current";N;s:3:"end";O:17:"DateTimeImmutable":3:{s:4:"date";s:26:"2022-04-29 15:51:56.000000";s:13:"timezone_type";i:3;s:8:"timezone";s:13:"Europe/London";}s:8:"interval";O:12:"DateInterval":11:{s:1:"y";i:2;s:1:"m";i:6;s:1:"d";i:0;s:1:"h";i:0;s:1:"i";i:0;s:1:"s";i:0;s:1:"f";d:0;s:6:"invert";i:0;s:4:"days";b:0;s:11:"from_string";b:0;s:11:"date_string";N;}s:11:"recurrences";i:0;s:18:"include_start_date";b:0;s:16:"include_end_date";b:0;}" Unserialised object: @@ -131,6 +133,8 @@ object(DatePeriod)#%d (%d) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } ["recurrences"]=> int(0) @@ -185,6 +189,8 @@ array(%d) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } ["recurrences"]=> int(0) diff --git a/ext/date/tests/DatePeriod_serialize-004.phpt b/ext/date/tests/DatePeriod_serialize-004.phpt index f3e8b1156e9b..2b08644f3640 100644 --- a/ext/date/tests/DatePeriod_serialize-004.phpt +++ b/ext/date/tests/DatePeriod_serialize-004.phpt @@ -71,6 +71,8 @@ object(DatePeriod)#%d (%d) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } ["recurrences"]=> int(7) @@ -92,7 +94,7 @@ Iterate of object: Serialised object: -string(%d) "O:10:"DatePeriod":7:{s:5:"start";O:17:"DateTimeImmutable":3:{s:4:"date";s:26:"1978-12-22 09:15:00.000000";s:13:"timezone_type";i:3;s:8:"timezone";s:16:"Europe/Amsterdam";}s:7:"current";O:17:"DateTimeImmutable":3:{s:4:"date";s:26:"1979-08-06 09:15:00.000000";s:13:"timezone_type";i:3;s:8:"timezone";s:16:"Europe/Amsterdam";}s:3:"end";N;s:8:"interval";O:12:"DateInterval":10:{s:1:"y";i:0;s:1:"m";i:1;s:1:"d";i:0;s:1:"h";i:0;s:1:"i";i:0;s:1:"s";i:0;s:1:"f";d:0;s:6:"invert";i:0;s:4:"days";b:0;s:11:"from_string";b:0;}s:11:"recurrences";i:7;s:18:"include_start_date";b:0;s:16:"include_end_date";b:0;}" +string(617) "O:10:"DatePeriod":7:{s:5:"start";O:17:"DateTimeImmutable":3:{s:4:"date";s:26:"1978-12-22 09:15:00.000000";s:13:"timezone_type";i:3;s:8:"timezone";s:16:"Europe/Amsterdam";}s:7:"current";O:17:"DateTimeImmutable":3:{s:4:"date";s:26:"1979-08-06 09:15:00.000000";s:13:"timezone_type";i:3;s:8:"timezone";s:16:"Europe/Amsterdam";}s:3:"end";N;s:8:"interval";O:12:"DateInterval":11:{s:1:"y";i:0;s:1:"m";i:1;s:1:"d";i:0;s:1:"h";i:0;s:1:"i";i:0;s:1:"s";i:0;s:1:"f";d:0;s:6:"invert";i:0;s:4:"days";b:0;s:11:"from_string";b:0;s:11:"date_string";N;}s:11:"recurrences";i:7;s:18:"include_start_date";b:0;s:16:"include_end_date";b:0;}" Unserialised object: @@ -139,6 +141,8 @@ object(DatePeriod)#%d (%d) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } ["recurrences"]=> int(7) @@ -193,6 +197,8 @@ array(%d) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } ["recurrences"]=> int(7) diff --git a/ext/date/tests/DatePeriod_set_state.phpt b/ext/date/tests/DatePeriod_set_state.phpt index b7d537e98570..ebefd1574932 100644 --- a/ext/date/tests/DatePeriod_set_state.phpt +++ b/ext/date/tests/DatePeriod_set_state.phpt @@ -55,6 +55,8 @@ object(DatePeriod)#%d (%d) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } ["recurrences"]=> int(25) diff --git a/ext/date/tests/bug45682.phpt b/ext/date/tests/bug45682.phpt index 84178aadb844..bb8550cc3f99 100644 --- a/ext/date/tests/bug45682.phpt +++ b/ext/date/tests/bug45682.phpt @@ -34,4 +34,6 @@ object(DateInterval)#%d (%d) { int(3) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } diff --git a/ext/date/tests/bug48678.phpt b/ext/date/tests/bug48678.phpt index 3934b187e709..5472271dc2c0 100644 --- a/ext/date/tests/bug48678.phpt +++ b/ext/date/tests/bug48678.phpt @@ -20,6 +20,7 @@ DateInterval Object [invert] => 0 [days] => [from_string] => + [date_string] => ) DateInterval Object ( @@ -33,4 +34,5 @@ DateInterval Object [invert] => 0 [days] => [from_string] => + [date_string] => ) diff --git a/ext/date/tests/bug49081.phpt b/ext/date/tests/bug49081.phpt index 6f98041e8f74..7733c65cf9bc 100644 --- a/ext/date/tests/bug49081.phpt +++ b/ext/date/tests/bug49081.phpt @@ -21,4 +21,5 @@ DateInterval Object [invert] => 0 [days] => 30 [from_string] => + [date_string] => ) diff --git a/ext/date/tests/bug49778.phpt b/ext/date/tests/bug49778.phpt index d4e1a2c0ace0..cfc9a735f950 100644 --- a/ext/date/tests/bug49778.phpt +++ b/ext/date/tests/bug49778.phpt @@ -29,6 +29,8 @@ object(DateInterval)#%d (%d) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } 7 (unknown) diff --git a/ext/date/tests/bug52113.phpt b/ext/date/tests/bug52113.phpt index 74c8157fcad4..7dd724a27407 100644 --- a/ext/date/tests/bug52113.phpt +++ b/ext/date/tests/bug52113.phpt @@ -54,8 +54,10 @@ object(DateInterval)#%d (%d) { int(0) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } -string(164) "O:12:"DateInterval":10:{s:1:"y";i:0;s:1:"m";i:0;s:1:"d";i:0;s:1:"h";i:4;s:1:"i";i:0;s:1:"s";i:0;s:1:"f";d:0;s:6:"invert";i:0;s:4:"days";i:0;s:11:"from_string";b:0;}" +string(185) "O:12:"DateInterval":11:{s:1:"y";i:0;s:1:"m";i:0;s:1:"d";i:0;s:1:"h";i:4;s:1:"i";i:0;s:1:"s";i:0;s:1:"f";d:0;s:6:"invert";i:0;s:4:"days";i:0;s:11:"from_string";b:0;s:11:"date_string";N;}" \DateInterval::__set_state(array( 'y' => 0, 'm' => 0, @@ -67,6 +69,7 @@ string(164) "O:12:"DateInterval":10:{s:1:"y";i:0;s:1:"m";i:0;s:1:"d";i:0;s:1:"h" 'invert' => 0, 'days' => 0, 'from_string' => false, + 'date_string' => NULL, ))object(DateInterval)#%d (%d) { ["y"]=> int(0) @@ -88,6 +91,8 @@ string(164) "O:12:"DateInterval":10:{s:1:"y";i:0;s:1:"m";i:0;s:1:"d";i:0;s:1:"h" int(0) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } object(DatePeriod)#%d (%d) { ["start"]=> @@ -125,6 +130,8 @@ object(DatePeriod)#%d (%d) { int(0) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } ["recurrences"]=> int(3) @@ -154,6 +161,8 @@ object(DateInterval)#%d (%d) { int(2400) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } object(DatePeriod)#%d (%d) { ["start"]=> @@ -191,6 +200,8 @@ object(DatePeriod)#%d (%d) { int(0) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } ["recurrences"]=> int(3) diff --git a/ext/date/tests/bug52738.phpt b/ext/date/tests/bug52738.phpt index e0f3a1ef5c84..781fded888a6 100644 --- a/ext/date/tests/bug52738.phpt +++ b/ext/date/tests/bug52738.phpt @@ -21,7 +21,6 @@ print_r($I); 42 di Object ( - [unit] => 42 [y] => 0 [m] => 0 [d] => 11 @@ -32,4 +31,6 @@ di Object [invert] => 0 [days] => [from_string] => + [date_string] => + [unit] => 42 ) diff --git a/ext/date/tests/bug52808.phpt b/ext/date/tests/bug52808.phpt index 45568c754458..aa436f895487 100644 --- a/ext/date/tests/bug52808.phpt +++ b/ext/date/tests/bug52808.phpt @@ -48,6 +48,8 @@ object(DateInterval)#%d (%d) { int(437) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } object(DateInterval)#%d (%d) { ["y"]=> @@ -70,6 +72,8 @@ object(DateInterval)#%d (%d) { int(294) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } object(DateInterval)#%d (%d) { ["y"]=> @@ -92,6 +96,8 @@ object(DateInterval)#%d (%d) { int(294) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } DateMalformedIntervalStringException: Failed to parse interval (2007-05-11T15:30:00Z/) DateMalformedIntervalStringException: Failed to parse interval (2007-05-11T15:30:00Z) diff --git a/ext/date/tests/bug53437_var0.phpt b/ext/date/tests/bug53437_var0.phpt index 9ae257a61b0f..96b1a7c51b49 100644 --- a/ext/date/tests/bug53437_var0.phpt +++ b/ext/date/tests/bug53437_var0.phpt @@ -71,6 +71,8 @@ object(DatePeriod)#%d (%d) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } ["recurrences"]=> int(3) @@ -122,6 +124,8 @@ object(DatePeriod)#%d (%d) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } ["recurrences"]=> int(3) diff --git a/ext/date/tests/bug53437_var2.phpt b/ext/date/tests/bug53437_var2.phpt index 9ca6a0f6b276..5691729af645 100644 --- a/ext/date/tests/bug53437_var2.phpt +++ b/ext/date/tests/bug53437_var2.phpt @@ -33,6 +33,8 @@ object(DateInterval)#1 (%d) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } object(DateInterval)#2 (%d) { ["y"]=> @@ -55,4 +57,6 @@ object(DateInterval)#2 (%d) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } diff --git a/ext/date/tests/bug53437_var4.phpt b/ext/date/tests/bug53437_var4.phpt index 14823fb4ba47..0cb2ef11a661 100644 --- a/ext/date/tests/bug53437_var4.phpt +++ b/ext/date/tests/bug53437_var4.phpt @@ -42,6 +42,8 @@ object(DateInterval)#%d (%d) { int(2) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } int(0) int(0) diff --git a/ext/date/tests/bug53437_var5.phpt b/ext/date/tests/bug53437_var5.phpt index 77d117bca691..41873ad5338f 100644 --- a/ext/date/tests/bug53437_var5.phpt +++ b/ext/date/tests/bug53437_var5.phpt @@ -32,4 +32,6 @@ object(DateInterval)#%d (%d) { int(0) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } diff --git a/ext/date/tests/bug53437_var6.phpt b/ext/date/tests/bug53437_var6.phpt index cfc60e6c1ca0..59fba5eb4ba7 100644 --- a/ext/date/tests/bug53437_var6.phpt +++ b/ext/date/tests/bug53437_var6.phpt @@ -32,4 +32,6 @@ object(DateInterval)#%d (%d) { int(0) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } diff --git a/ext/date/tests/bug60774.phpt b/ext/date/tests/bug60774.phpt index 2f3de6bafd14..477dc3d4696d 100644 --- a/ext/date/tests/bug60774.phpt +++ b/ext/date/tests/bug60774.phpt @@ -9,6 +9,24 @@ echo $i->format("%a"), "\n"; ?> --EXPECTF-- object(DateInterval)#1 (%d) { + ["y"]=> + NULL + ["m"]=> + NULL + ["d"]=> + NULL + ["h"]=> + NULL + ["i"]=> + NULL + ["s"]=> + NULL + ["f"]=> + NULL + ["invert"]=> + NULL + ["days"]=> + bool(false) ["from_string"]=> bool(true) ["date_string"]=> diff --git a/ext/date/tests/bug66545.phpt b/ext/date/tests/bug66545.phpt index 0d2f33757069..d5f7dad906ed 100644 --- a/ext/date/tests/bug66545.phpt +++ b/ext/date/tests/bug66545.phpt @@ -28,4 +28,5 @@ DateInterval Object [invert] => 0 [days] => 14 [from_string] => + [date_string] => ) diff --git a/ext/date/tests/bug70153.phpt b/ext/date/tests/bug70153.phpt index 9aaa0e7d538f..58602c8da515 100644 --- a/ext/date/tests/bug70153.phpt +++ b/ext/date/tests/bug70153.phpt @@ -18,12 +18,30 @@ var_dump($i1->days, $i2->days); --EXPECT-- DateInterval Object ( + [y] => + [m] => + [d] => + [h] => + [i] => + [s] => + [f] => + [invert] => + [days] => [from_string] => 1 [date_string] => +1 month ) -O:12:"DateInterval":2:{s:11:"from_string";b:1;s:11:"date_string";s:8:"+1 month";} +O:12:"DateInterval":11:{s:1:"y";N;s:1:"m";N;s:1:"d";N;s:1:"h";N;s:1:"i";N;s:1:"s";N;s:1:"f";N;s:6:"invert";N;s:4:"days";b:0;s:11:"from_string";b:1;s:11:"date_string";s:8:"+1 month";} DateInterval Object ( + [y] => + [m] => + [d] => + [h] => + [i] => + [s] => + [f] => + [invert] => + [days] => [from_string] => 1 [date_string] => +1 month ) diff --git a/ext/date/tests/bug71700.phpt b/ext/date/tests/bug71700.phpt index 09f6e76058c5..fd13cd94c041 100644 --- a/ext/date/tests/bug71700.phpt +++ b/ext/date/tests/bug71700.phpt @@ -33,4 +33,6 @@ object(DateInterval)#3 (%d) { int(30) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } diff --git a/ext/date/tests/bug73091.phpt b/ext/date/tests/bug73091.phpt index 440f2bbca60d..3d8ede3725ed 100644 --- a/ext/date/tests/bug73091.phpt +++ b/ext/date/tests/bug73091.phpt @@ -33,4 +33,6 @@ object(DateInterval)#%d (%d) { int(-1) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } diff --git a/ext/date/tests/bug74274.phpt b/ext/date/tests/bug74274.phpt index 20387419728d..84d71130fa51 100644 --- a/ext/date/tests/bug74274.phpt +++ b/ext/date/tests/bug74274.phpt @@ -21,4 +21,5 @@ DateInterval Object [invert] => 0 [days] => 1 [from_string] => + [date_string] => ) diff --git a/ext/date/tests/bug74524.phpt b/ext/date/tests/bug74524.phpt index 825fb0be8b30..5f105268a343 100644 --- a/ext/date/tests/bug74524.phpt +++ b/ext/date/tests/bug74524.phpt @@ -23,4 +23,5 @@ DateInterval Object [invert] => 1 [days] => 227 [from_string] => + [date_string] => ) diff --git a/ext/date/tests/bug77571.phpt b/ext/date/tests/bug77571.phpt index 84790e0cd67b..84826f760cf4 100644 --- a/ext/date/tests/bug77571.phpt +++ b/ext/date/tests/bug77571.phpt @@ -24,4 +24,5 @@ DateInterval Object [invert] => 0 [days] => 35 [from_string] => + [date_string] => ) diff --git a/ext/date/tests/bug78452.phpt b/ext/date/tests/bug78452.phpt index ba6936551168..c3a979c1b63a 100644 --- a/ext/date/tests/bug78452.phpt +++ b/ext/date/tests/bug78452.phpt @@ -29,4 +29,6 @@ object(DateInterval)#3 (%d) { int(33) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } diff --git a/ext/date/tests/bug79015.phpt b/ext/date/tests/bug79015.phpt index 99cb03f75d5c..d0707ff21802 100644 --- a/ext/date/tests/bug79015.phpt +++ b/ext/date/tests/bug79015.phpt @@ -27,4 +27,6 @@ object(DateInterval)#%d (%d) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } diff --git a/ext/date/tests/bug81263.phpt b/ext/date/tests/bug81263.phpt index afeba1ebbb1a..00256690c7bd 100644 --- a/ext/date/tests/bug81263.phpt +++ b/ext/date/tests/bug81263.phpt @@ -9,7 +9,7 @@ $dt2 = new DateTimeImmutable('2020-07-19 16:30:00', new DateTimeZone('UTC')); print_r($dt2->diff($dt1)); print_r($dt1->diff($dt2)); ?> ---EXPECTF-- +--EXPECT-- DateInterval Object ( [y] => 0 @@ -22,6 +22,7 @@ DateInterval Object [invert] => 0 [days] => 0 [from_string] => + [date_string] => ) DateInterval Object ( @@ -35,4 +36,5 @@ DateInterval Object [invert] => 0 [days] => 0 [from_string] => + [date_string] => ) diff --git a/ext/date/tests/date_diff1.phpt b/ext/date/tests/date_diff1.phpt index fa2c64ddd59d..5f2111f8f9c4 100644 --- a/ext/date/tests/date_diff1.phpt +++ b/ext/date/tests/date_diff1.phpt @@ -49,4 +49,6 @@ object(DateInterval)#%d (%d) { int(33) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } diff --git a/ext/date/tests/date_period_set_state1.phpt b/ext/date/tests/date_period_set_state1.phpt index b3824cee4e8d..2a4eebc18349 100644 --- a/ext/date/tests/date_period_set_state1.phpt +++ b/ext/date/tests/date_period_set_state1.phpt @@ -62,6 +62,8 @@ object(DatePeriod)#%d (%d) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } ["recurrences"]=> int(2) diff --git a/ext/date/tests/date_period_unserialize1.phpt b/ext/date/tests/date_period_unserialize1.phpt index 9ab7dd514859..1e7569db95f1 100644 --- a/ext/date/tests/date_period_unserialize1.phpt +++ b/ext/date/tests/date_period_unserialize1.phpt @@ -67,6 +67,8 @@ object(DatePeriod)#%d (%d) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } ["recurrences"]=> int(2) diff --git a/ext/date/tests/date_period_unserialize3.phpt b/ext/date/tests/date_period_unserialize3.phpt index d5d4a57456d9..2d0612c803dc 100644 --- a/ext/date/tests/date_period_unserialize3.phpt +++ b/ext/date/tests/date_period_unserialize3.phpt @@ -72,6 +72,8 @@ object(DatePeriod)#%d (%d) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } ["recurrences"]=> int(1) diff --git a/ext/date/tests/date_time_fractions.phpt b/ext/date/tests/date_time_fractions.phpt index 4536e0f2eb21..10681db1e9eb 100644 --- a/ext/date/tests/date_time_fractions.phpt +++ b/ext/date/tests/date_time_fractions.phpt @@ -79,6 +79,8 @@ object(DateInterval)#%d (%d) { int(0) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } 2016-10-03 13:20:06.724934 2016-10-03 13:20:07.103123 diff --git a/ext/date/tests/gh10747-3.phpt b/ext/date/tests/gh10747-3.phpt index ea37c26eb249..60f059c49728 100644 --- a/ext/date/tests/gh10747-3.phpt +++ b/ext/date/tests/gh10747-3.phpt @@ -23,16 +23,8 @@ $u = unserialize($s); var_dump($i, str_replace(chr(0), '!', $s), $u); ?> ---EXPECTF-- -object(I)#1 (14) { - ["var1":"I":private]=> - int(1) - ["var2":"I":private]=> - int(2) - ["var3":protected]=> - int(3) - ["var4":protected]=> - int(4) +--EXPECT-- +object(I)#1 (15) { ["y"]=> int(0) ["m"]=> @@ -53,9 +45,8 @@ object(I)#1 (14) { bool(false) ["from_string"]=> bool(false) -} -string(224) "O:1:"I":14:{s:1:"y";i:0;s:1:"m";i:0;s:1:"d";i:3;s:1:"h";i:0;s:1:"i";i:0;s:1:"s";i:0;s:1:"f";d:0;s:6:"invert";i:0;s:4:"days";b:0;s:11:"from_string";b:0;s:7:"!I!var1";i:1;s:7:"!I!var2";i:2;s:7:"!*!var3";i:3;s:7:"!*!var4";i:4;}" -object(I)#2 (14) { + ["date_string"]=> + NULL ["var1":"I":private]=> int(1) ["var2":"I":private]=> @@ -64,6 +55,9 @@ object(I)#2 (14) { int(3) ["var4":protected]=> int(4) +} +string(245) "O:1:"I":15:{s:1:"y";i:0;s:1:"m";i:0;s:1:"d";i:3;s:1:"h";i:0;s:1:"i";i:0;s:1:"s";i:0;s:1:"f";d:0;s:6:"invert";i:0;s:4:"days";b:0;s:11:"from_string";b:0;s:11:"date_string";N;s:7:"!I!var1";i:1;s:7:"!I!var2";i:2;s:7:"!*!var3";i:3;s:7:"!*!var4";i:4;}" +object(I)#2 (15) { ["y"]=> int(0) ["m"]=> @@ -84,4 +78,14 @@ object(I)#2 (14) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL + ["var1":"I":private]=> + int(1) + ["var2":"I":private]=> + int(2) + ["var3":protected]=> + int(3) + ["var4":protected]=> + int(4) } diff --git a/ext/date/tests/gh10747-4.phpt b/ext/date/tests/gh10747-4.phpt index 9933902a498d..8edb7f8bde44 100644 --- a/ext/date/tests/gh10747-4.phpt +++ b/ext/date/tests/gh10747-4.phpt @@ -25,7 +25,7 @@ $u = unserialize($s); var_dump($i, str_replace(chr(0), '!', $s), $u); ?> ---EXPECTF-- +--EXPECT-- object(I)#1 (11) { ["start"]=> object(DateTimeImmutable)#5 (3) { @@ -48,7 +48,7 @@ object(I)#1 (11) { string(3) "UTC" } ["interval"]=> - object(DateInterval)#7 (10) { + object(DateInterval)#7 (11) { ["y"]=> int(0) ["m"]=> @@ -69,6 +69,8 @@ object(I)#1 (11) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } ["recurrences"]=> int(1) @@ -85,7 +87,7 @@ object(I)#1 (11) { ["var4":protected]=> int(4) } -string(631) "O:1:"I":11:{s:5:"start";O:17:"DateTimeImmutable":3:{s:4:"date";s:26:"2023-03-03 16:24:00.000000";s:13:"timezone_type";i:3;s:8:"timezone";s:3:"UTC";}s:7:"current";N;s:3:"end";O:17:"DateTimeImmutable":3:{s:4:"date";s:26:"2023-03-09 16:24:00.000000";s:13:"timezone_type";i:3;s:8:"timezone";s:3:"UTC";}s:8:"interval";O:12:"DateInterval":10:{s:1:"y";i:0;s:1:"m";i:0;s:1:"d";i:0;s:1:"h";i:1;s:1:"i";i:0;s:1:"s";i:0;s:1:"f";d:0;s:6:"invert";i:0;s:4:"days";b:0;s:11:"from_string";b:0;}s:11:"recurrences";i:1;s:18:"include_start_date";b:1;s:16:"include_end_date";b:0;s:7:"!I!var1";i:1;s:7:"!I!var2";i:2;s:7:"!*!var3";i:3;s:7:"!*!var4";i:4;}" +string(652) "O:1:"I":11:{s:5:"start";O:17:"DateTimeImmutable":3:{s:4:"date";s:26:"2023-03-03 16:24:00.000000";s:13:"timezone_type";i:3;s:8:"timezone";s:3:"UTC";}s:7:"current";N;s:3:"end";O:17:"DateTimeImmutable":3:{s:4:"date";s:26:"2023-03-09 16:24:00.000000";s:13:"timezone_type";i:3;s:8:"timezone";s:3:"UTC";}s:8:"interval";O:12:"DateInterval":11:{s:1:"y";i:0;s:1:"m";i:0;s:1:"d";i:0;s:1:"h";i:1;s:1:"i";i:0;s:1:"s";i:0;s:1:"f";d:0;s:6:"invert";i:0;s:4:"days";b:0;s:11:"from_string";b:0;s:11:"date_string";N;}s:11:"recurrences";i:1;s:18:"include_start_date";b:1;s:16:"include_end_date";b:0;s:7:"!I!var1";i:1;s:7:"!I!var2";i:2;s:7:"!*!var3";i:3;s:7:"!*!var4";i:4;}" object(I)#2 (11) { ["start"]=> object(DateTimeImmutable)#9 (3) { @@ -108,7 +110,7 @@ object(I)#2 (11) { string(3) "UTC" } ["interval"]=> - object(DateInterval)#11 (10) { + object(DateInterval)#11 (11) { ["y"]=> int(0) ["m"]=> @@ -129,6 +131,8 @@ object(I)#2 (11) { bool(false) ["from_string"]=> bool(false) + ["date_string"]=> + NULL } ["recurrences"]=> int(1) diff --git a/ext/date/tests/gh8730.phpt b/ext/date/tests/gh8730.phpt index 2992652ec0e6..b9b6beef9b79 100644 --- a/ext/date/tests/gh8730.phpt +++ b/ext/date/tests/gh8730.phpt @@ -19,4 +19,5 @@ DateInterval Object [invert] => 0 [days] => 0 [from_string] => + [date_string] => )