@@ -667,12 +667,12 @@ static zend_object *date_object_clone_period(zval *this_ptr);
667
667
668
668
static int date_object_compare_date (zval * d1 , zval * d2 );
669
669
static HashTable * date_object_get_gc (zval * object , zval * * table , int * n );
670
- static HashTable * date_object_get_properties (zval * object );
670
+ static HashTable * date_object_get_properties_for (zval * object , zend_prop_purpose purpose );
671
671
static HashTable * date_object_get_gc_interval (zval * object , zval * * table , int * n );
672
672
static HashTable * date_object_get_properties_interval (zval * object );
673
673
static HashTable * date_object_get_gc_period (zval * object , zval * * table , int * n );
674
674
static HashTable * date_object_get_properties_period (zval * object );
675
- static HashTable * date_object_get_properties_timezone (zval * object );
675
+ static HashTable * date_object_get_properties_for_timezone (zval * object , zend_prop_purpose purpose );
676
676
static HashTable * date_object_get_gc_timezone (zval * object , zval * * table , int * n );
677
677
static HashTable * date_object_get_debug_info_timezone (zval * object , int * is_temp );
678
678
static void php_timezone_to_string (php_timezone_obj * tzobj , zval * zv );
@@ -2123,7 +2123,7 @@ static void date_register_classes(void) /* {{{ */
2123
2123
date_object_handlers_date .free_obj = date_object_free_storage_date ;
2124
2124
date_object_handlers_date .clone_obj = date_object_clone_date ;
2125
2125
date_object_handlers_date .compare_objects = date_object_compare_date ;
2126
- date_object_handlers_date .get_properties = date_object_get_properties ;
2126
+ date_object_handlers_date .get_properties_for = date_object_get_properties_for ;
2127
2127
date_object_handlers_date .get_gc = date_object_get_gc ;
2128
2128
zend_class_implements (date_ce_date , 1 , date_ce_interface );
2129
2129
@@ -2133,7 +2133,7 @@ static void date_register_classes(void) /* {{{ */
2133
2133
memcpy (& date_object_handlers_immutable , & std_object_handlers , sizeof (zend_object_handlers ));
2134
2134
date_object_handlers_immutable .clone_obj = date_object_clone_date ;
2135
2135
date_object_handlers_immutable .compare_objects = date_object_compare_date ;
2136
- date_object_handlers_immutable .get_properties = date_object_get_properties ;
2136
+ date_object_handlers_immutable .get_properties_for = date_object_get_properties_for ;
2137
2137
date_object_handlers_immutable .get_gc = date_object_get_gc ;
2138
2138
zend_class_implements (date_ce_immutable , 1 , date_ce_interface );
2139
2139
@@ -2144,7 +2144,7 @@ static void date_register_classes(void) /* {{{ */
2144
2144
date_object_handlers_timezone .offset = XtOffsetOf (php_timezone_obj , std );
2145
2145
date_object_handlers_timezone .free_obj = date_object_free_storage_timezone ;
2146
2146
date_object_handlers_timezone .clone_obj = date_object_clone_timezone ;
2147
- date_object_handlers_timezone .get_properties = date_object_get_properties_timezone ;
2147
+ date_object_handlers_timezone .get_properties_for = date_object_get_properties_for_timezone ;
2148
2148
date_object_handlers_timezone .get_gc = date_object_get_gc_timezone ;
2149
2149
date_object_handlers_timezone .get_debug_info = date_object_get_debug_info_timezone ;
2150
2150
@@ -2273,17 +2273,23 @@ static HashTable *date_object_get_gc_timezone(zval *object, zval **table, int *n
2273
2273
return zend_std_get_properties (object );
2274
2274
} /* }}} */
2275
2275
2276
- static HashTable * date_object_get_properties (zval * object ) /* {{{ */
2276
+ static HashTable * date_object_get_properties_for (zval * object , zend_prop_purpose purpose ) /* {{{ */
2277
2277
{
2278
2278
HashTable * props ;
2279
2279
zval zv ;
2280
- php_date_obj * dateobj ;
2280
+ php_date_obj * dateobj ;
2281
2281
2282
+ switch (purpose ) {
2283
+ case ZEND_PROP_PURPOSE_DEBUG :
2284
+ case ZEND_PROP_PURPOSE_SERIALIZE :
2285
+ case ZEND_PROP_PURPOSE_VAR_EXPORT :
2286
+ break ;
2287
+ default :
2288
+ return zend_std_get_properties_for (object , purpose );
2289
+ }
2282
2290
2283
2291
dateobj = Z_PHPDATE_P (object );
2284
-
2285
- props = zend_std_get_properties (object );
2286
-
2292
+ props = zend_array_dup (zend_std_get_properties (object ));
2287
2293
if (!dateobj -> time ) {
2288
2294
return props ;
2289
2295
}
@@ -2387,16 +2393,23 @@ static void php_timezone_to_string(php_timezone_obj *tzobj, zval *zv)
2387
2393
}
2388
2394
}
2389
2395
2390
- static HashTable * date_object_get_properties_timezone (zval * object ) /* {{{ */
2396
+ static HashTable * date_object_get_properties_for_timezone (zval * object , zend_prop_purpose purpose ) /* {{{ */
2391
2397
{
2392
2398
HashTable * props ;
2393
2399
zval zv ;
2394
- php_timezone_obj * tzobj ;
2395
-
2396
- tzobj = Z_PHPTIMEZONE_P (object );
2400
+ php_timezone_obj * tzobj ;
2397
2401
2398
- props = zend_std_get_properties (object );
2402
+ switch (purpose ) {
2403
+ case ZEND_PROP_PURPOSE_DEBUG :
2404
+ case ZEND_PROP_PURPOSE_SERIALIZE :
2405
+ case ZEND_PROP_PURPOSE_VAR_EXPORT :
2406
+ break ;
2407
+ default :
2408
+ return zend_std_get_properties_for (object , purpose );
2409
+ }
2399
2410
2411
+ tzobj = Z_PHPTIMEZONE_P (object );
2412
+ props = zend_array_dup (zend_std_get_properties (object ));
2400
2413
if (!tzobj -> initialized ) {
2401
2414
return props ;
2402
2415
}
@@ -2468,12 +2481,10 @@ static HashTable *date_object_get_properties_interval(zval *object) /* {{{ */
2468
2481
{
2469
2482
HashTable * props ;
2470
2483
zval zv ;
2471
- php_interval_obj * intervalobj ;
2484
+ php_interval_obj * intervalobj ;
2472
2485
2473
2486
intervalobj = Z_PHPINTERVAL_P (object );
2474
-
2475
2487
props = zend_std_get_properties (object );
2476
-
2477
2488
if (!intervalobj -> initialized ) {
2478
2489
return props ;
2479
2490
}
@@ -5094,9 +5105,7 @@ static HashTable *date_object_get_properties_period(zval *object) /* {{{ */
5094
5105
php_period_obj * period_obj ;
5095
5106
5096
5107
period_obj = Z_PHPPERIOD_P (object );
5097
-
5098
5108
props = zend_std_get_properties (object );
5099
-
5100
5109
if (!period_obj -> start ) {
5101
5110
return props ;
5102
5111
}
0 commit comments