@@ -352,6 +352,7 @@ static HashTable *date_object_get_gc(zend_object *object, zval **table, int *n);
352352static HashTable * date_object_get_properties_for (zend_object * object , zend_prop_purpose purpose );
353353static HashTable * date_object_get_gc_interval (zend_object * object , zval * * table , int * n );
354354static HashTable * date_object_get_properties_interval (zend_object * object );
355+ static HashTable * date_object_get_properties_for_interval (zend_object * object , zend_prop_purpose purpose );
355356static HashTable * date_object_get_gc_period (zend_object * object , zval * * table , int * n );
356357static HashTable * date_object_get_properties_for_timezone (zend_object * object , zend_prop_purpose purpose );
357358static HashTable * date_object_get_gc_timezone (zend_object * object , zval * * table , int * n );
@@ -1816,6 +1817,7 @@ static void date_register_classes(void) /* {{{ */
18161817 date_object_handlers_interval .read_property = date_interval_read_property ;
18171818 date_object_handlers_interval .write_property = date_interval_write_property ;
18181819 date_object_handlers_interval .get_properties = date_object_get_properties_interval ;
1820+ date_object_handlers_interval .get_properties_for = date_object_get_properties_for_interval ;
18191821 date_object_handlers_interval .get_property_ptr_ptr = date_interval_get_property_ptr_ptr ;
18201822 date_object_handlers_interval .get_gc = date_object_get_gc_interval ;
18211823 date_object_handlers_interval .compare = date_interval_compare_objects ;
@@ -2240,6 +2242,33 @@ static HashTable *date_object_get_properties_interval(zend_object *object) /* {{
22402242 return props ;
22412243} /* }}} */
22422244
2245+ static HashTable * date_object_get_properties_for_interval (zend_object * object , zend_prop_purpose purpose ) /* {{{ */
2246+ {
2247+ HashTable * props ;
2248+ php_interval_obj * intervalobj ;
2249+
2250+ switch (purpose ) {
2251+ case ZEND_PROP_PURPOSE_DEBUG :
2252+ case ZEND_PROP_PURPOSE_SERIALIZE :
2253+ case ZEND_PROP_PURPOSE_VAR_EXPORT :
2254+ case ZEND_PROP_PURPOSE_JSON :
2255+ case ZEND_PROP_PURPOSE_ARRAY_CAST :
2256+ break ;
2257+ default :
2258+ return zend_std_get_properties_for (object , purpose );
2259+ }
2260+
2261+ intervalobj = php_interval_obj_from_obj (object );
2262+ props = zend_array_dup (zend_std_get_properties (object ));
2263+ if (!intervalobj -> initialized ) {
2264+ return props ;
2265+ }
2266+
2267+ date_interval_object_to_hash (intervalobj , props );
2268+
2269+ return props ;
2270+ } /* }}} */
2271+
22432272static zend_object * date_object_new_period (zend_class_entry * class_type ) /* {{{ */
22442273{
22452274 php_period_obj * intern = zend_object_alloc (sizeof (php_period_obj ), class_type );
0 commit comments