@@ -362,6 +362,7 @@ static zval *date_interval_get_property_ptr_ptr(zend_object *object, zend_string
362
362
static zval * date_period_read_property (zend_object * object , zend_string * name , int type , void * * cache_slot , zval * rv );
363
363
static zval * date_period_write_property (zend_object * object , zend_string * name , zval * value , void * * cache_slot );
364
364
static zval * date_period_get_property_ptr_ptr (zend_object * object , zend_string * name , int type , void * * cache_slot );
365
+ static HashTable * date_period_get_debug_info (zend_object * object , int * is_temp );
365
366
366
367
static int date_object_compare_timezone (zval * tz1 , zval * tz2 );
367
368
@@ -1501,45 +1502,6 @@ static void create_date_period_interval(timelib_rel_time *interval, zval *zv)
1501
1502
}
1502
1503
}
1503
1504
1504
- static void write_date_period_property (zend_object * obj , const char * name , const size_t name_len , zval * zv )
1505
- {
1506
- zend_string * property_name = zend_string_init (name , name_len , 0 );
1507
-
1508
- zend_std_write_property (obj , property_name , zv , NULL );
1509
-
1510
- zval_ptr_dtor (zv );
1511
- zend_string_release (property_name );
1512
- }
1513
-
1514
- static void initialize_date_period_properties (php_period_obj * period_obj )
1515
- {
1516
- zval zv ;
1517
-
1518
- /* rebuild properties */
1519
- zend_std_get_properties_ex (& period_obj -> std );
1520
-
1521
- create_date_period_datetime (period_obj -> start , period_obj -> start_ce , & zv );
1522
- write_date_period_property (& period_obj -> std , "start" , sizeof ("start" ) - 1 , & zv );
1523
-
1524
- create_date_period_datetime (period_obj -> current , period_obj -> start_ce , & zv );
1525
- write_date_period_property (& period_obj -> std , "current" , sizeof ("current" ) - 1 , & zv );
1526
-
1527
- create_date_period_datetime (period_obj -> end , period_obj -> start_ce , & zv );
1528
- write_date_period_property (& period_obj -> std , "end" , sizeof ("end" ) - 1 , & zv );
1529
-
1530
- create_date_period_interval (period_obj -> interval , & zv );
1531
- write_date_period_property (& period_obj -> std , "interval" , sizeof ("interval" ) - 1 , & zv );
1532
-
1533
- ZVAL_LONG (& zv , (zend_long ) period_obj -> recurrences );
1534
- write_date_period_property (& period_obj -> std , "recurrences" , sizeof ("recurrences" ) - 1 , & zv );
1535
-
1536
- ZVAL_BOOL (& zv , period_obj -> include_start_date );
1537
- write_date_period_property (& period_obj -> std , "include_start_date" , sizeof ("include_start_date" ) - 1 , & zv );
1538
-
1539
- ZVAL_BOOL (& zv , period_obj -> include_end_date );
1540
- write_date_period_property (& period_obj -> std , "include_end_date" , sizeof ("include_end_date" ) - 1 , & zv );
1541
- }
1542
-
1543
1505
/* define an overloaded iterator structure */
1544
1506
typedef struct {
1545
1507
zend_object_iterator intern ;
@@ -1659,10 +1621,7 @@ static void date_period_it_move_forward(zend_object_iterator *iter)
1659
1621
zend_std_get_properties_ex (& object -> std );
1660
1622
1661
1623
create_date_period_datetime (object -> current , object -> start_ce , & current_zv );
1662
- zend_string * property_name = ZSTR_INIT_LITERAL ("current" , 0 );
1663
- zend_std_write_property (& object -> std , property_name , & current_zv , NULL );
1664
1624
zval_ptr_dtor (& current_zv );
1665
- zend_string_release (property_name );
1666
1625
1667
1626
iterator -> current_index ++ ;
1668
1627
date_period_it_invalidate_current (iter );
@@ -1835,6 +1794,7 @@ static void date_register_classes(void) /* {{{ */
1835
1794
date_object_handlers_period .get_property_ptr_ptr = date_period_get_property_ptr_ptr ;
1836
1795
date_object_handlers_period .read_property = date_period_read_property ;
1837
1796
date_object_handlers_period .write_property = date_period_write_property ;
1797
+ date_object_handlers_period .get_debug_info = date_period_get_debug_info ;
1838
1798
1839
1799
date_ce_date_error = register_class_DateError (zend_ce_error );
1840
1800
date_ce_date_object_error = register_class_DateObjectError (date_ce_date_error );
@@ -5117,8 +5077,6 @@ static bool date_period_init_finish(php_period_obj *dpobj, zend_long options, ze
5117
5077
5118
5078
dpobj -> initialized = 1 ;
5119
5079
5120
- initialize_date_period_properties (dpobj );
5121
-
5122
5080
return true;
5123
5081
}
5124
5082
@@ -5822,8 +5780,6 @@ static bool php_date_period_initialize_from_hash(php_period_obj *period_obj, Has
5822
5780
5823
5781
period_obj -> initialized = 1 ;
5824
5782
5825
- initialize_date_period_properties (period_obj );
5826
-
5827
5783
return 1 ;
5828
5784
} /* }}} */
5829
5785
@@ -5976,3 +5932,39 @@ static zval *date_period_get_property_ptr_ptr(zend_object *object, zend_string *
5976
5932
5977
5933
return zend_std_get_property_ptr_ptr (object , name , type , cache_slot );
5978
5934
}
5935
+
5936
+ static HashTable * date_period_get_debug_info (zend_object * object , int * is_temp )
5937
+ {
5938
+ HashTable * ht , * props ;
5939
+ zval zv ;
5940
+ php_period_obj * period_obj ;
5941
+
5942
+ period_obj = php_period_obj_from_obj (object );
5943
+ props = zend_std_get_properties (object );
5944
+
5945
+ * is_temp = 1 ;
5946
+ ht = zend_array_dup (props );
5947
+
5948
+ create_date_period_datetime (period_obj -> start , period_obj -> start_ce , & zv );
5949
+ zend_hash_str_update (ht , "start" , sizeof ("start" ) - 1 , & zv );
5950
+
5951
+ create_date_period_datetime (period_obj -> current , period_obj -> start_ce , & zv );
5952
+ zend_hash_str_update (ht , "current" , sizeof ("current" ) - 1 , & zv );
5953
+
5954
+ create_date_period_datetime (period_obj -> end , period_obj -> start_ce , & zv );
5955
+ zend_hash_str_update (ht , "end" , sizeof ("end" )- 1 , & zv );
5956
+
5957
+ create_date_period_interval (period_obj -> interval , & zv );
5958
+ zend_hash_str_update (ht , "interval" , sizeof ("interval" )- 1 , & zv );
5959
+
5960
+ ZVAL_LONG (& zv , period_obj -> recurrences );
5961
+ zend_hash_str_update (ht , "recurrences" , sizeof ("recurrences" )- 1 , & zv );
5962
+
5963
+ ZVAL_BOOL (& zv , period_obj -> include_start_date );
5964
+ zend_hash_str_update (ht , "include_start_date" , sizeof ("include_start_date" )- 1 , & zv );
5965
+
5966
+ ZVAL_BOOL (& zv , period_obj -> include_end_date );
5967
+ zend_hash_str_update (ht , "include_end_date" , sizeof ("include_end_date" )- 1 , & zv );
5968
+
5969
+ return ht ;
5970
+ }
0 commit comments