@@ -304,17 +304,13 @@ static HashTable *date_object_get_gc_timezone(zend_object *object, zval **table,
304
304
static HashTable * date_object_get_debug_info_timezone (zend_object * object , int * is_temp );
305
305
static void php_timezone_to_string (php_timezone_obj * tzobj , zval * zv );
306
306
307
- static void create_date_period_datetime (timelib_time * datetime , zend_class_entry * ce , zval * zv );
308
- static void create_date_period_interval (timelib_rel_time * interval , zval * zv );
309
- static void initialize_date_period_properties (php_period_obj * period_obj );
310
-
311
307
static int date_interval_compare_objects (zval * o1 , zval * o2 );
312
308
static zval * date_interval_read_property (zend_object * object , zend_string * member , int type , void * * cache_slot , zval * rv );
313
309
static zval * date_interval_write_property (zend_object * object , zend_string * member , zval * value , void * * cache_slot );
314
310
static zval * date_interval_get_property_ptr_ptr (zend_object * object , zend_string * member , int type , void * * cache_slot );
315
- static zval * date_period_get_property_ptr_ptr (zend_object * object , zend_string * name , int type , void * * cache_slot );
316
311
static zval * date_period_read_property (zend_object * object , zend_string * name , int type , void * * cache_slot , zval * rv );
317
312
static zval * date_period_write_property (zend_object * object , zend_string * name , zval * value , void * * cache_slot );
313
+ static zval * date_period_get_property_ptr_ptr (zend_object * object , zend_string * name , int type , void * * cache_slot );
318
314
319
315
static int date_object_compare_timezone (zval * tz1 , zval * tz2 );
320
316
@@ -1399,6 +1395,63 @@ PHP_FUNCTION(getdate)
1399
1395
}
1400
1396
/* }}} */
1401
1397
1398
+ static void create_date_period_datetime (timelib_time * datetime , zend_class_entry * ce , zval * zv )
1399
+ {
1400
+ if (datetime ) {
1401
+ php_date_obj * date_obj ;
1402
+
1403
+ object_init_ex (zv , ce );
1404
+ date_obj = Z_PHPDATE_P (zv );
1405
+ date_obj -> time = timelib_time_clone (datetime );
1406
+ } else {
1407
+ ZVAL_NULL (zv );
1408
+ }
1409
+ }
1410
+
1411
+ static void create_date_period_interval (timelib_rel_time * interval , zval * zv )
1412
+ {
1413
+ if (interval ) {
1414
+ php_interval_obj * interval_obj ;
1415
+
1416
+ object_init_ex (zv , date_ce_interval );
1417
+ interval_obj = Z_PHPINTERVAL_P (zv );
1418
+ interval_obj -> diff = timelib_rel_time_clone (interval );
1419
+ interval_obj -> initialized = 1 ;
1420
+ } else {
1421
+ ZVAL_NULL (zv );
1422
+ }
1423
+ }
1424
+
1425
+ static void initialize_date_period_properties (php_period_obj * period_obj )
1426
+ {
1427
+ zval start_zv , current_zv , end_zv , interval_zv ;
1428
+
1429
+ if (UNEXPECTED (!period_obj -> std .properties )) {
1430
+ rebuild_object_properties (& period_obj -> std );
1431
+ }
1432
+
1433
+ create_date_period_datetime (period_obj -> start , period_obj -> start_ce , & start_zv );
1434
+ zend_update_property (date_ce_period , & period_obj -> std , "start" , sizeof ("start" ) - 1 , & start_zv );
1435
+ zval_ptr_dtor (& start_zv );
1436
+
1437
+ create_date_period_datetime (period_obj -> current , period_obj -> start_ce , & current_zv );
1438
+ zend_string * property_name = zend_string_init ("current" , sizeof ("current" ) - 1 , 0 );
1439
+ zend_std_write_property (& period_obj -> std , property_name , & current_zv , NULL );
1440
+ zval_ptr_dtor (& current_zv );
1441
+ zend_string_release (property_name );
1442
+
1443
+ create_date_period_datetime (period_obj -> end , period_obj -> start_ce , & end_zv );
1444
+ zend_update_property (date_ce_period , & period_obj -> std , "end" , sizeof ("end" ) - 1 , & end_zv );
1445
+ zval_ptr_dtor (& end_zv );
1446
+
1447
+ create_date_period_interval (period_obj -> interval , & interval_zv );
1448
+ zend_update_property (date_ce_period , & period_obj -> std , "interval" , sizeof ("interval" ) - 1 , & interval_zv );
1449
+ zval_ptr_dtor (& interval_zv );
1450
+
1451
+ zend_update_property_long (date_ce_period , & period_obj -> std , "recurrences" , sizeof ("recurrences" ) - 1 , (zend_long ) period_obj -> recurrences );
1452
+ zend_update_property_bool (date_ce_period , & period_obj -> std , "include_start_date" , sizeof ("include_start_date" ) - 1 , period_obj -> include_start_date );
1453
+ }
1454
+
1402
1455
/* define an overloaded iterator structure */
1403
1456
typedef struct {
1404
1457
zend_object_iterator intern ;
@@ -5225,58 +5278,3 @@ static zval *date_period_get_property_ptr_ptr(zend_object *object, zend_string *
5225
5278
5226
5279
return zend_std_get_property_ptr_ptr (object , name , type , cache_slot );
5227
5280
}
5228
-
5229
- static void create_date_period_datetime (timelib_time * datetime , zend_class_entry * ce , zval * zv )
5230
- {
5231
- if (datetime ) {
5232
- php_date_obj * date_obj ;
5233
- object_init_ex (zv , ce );
5234
- date_obj = Z_PHPDATE_P (zv );
5235
- date_obj -> time = timelib_time_clone (datetime );
5236
- } else {
5237
- ZVAL_NULL (zv );
5238
- }
5239
- }
5240
-
5241
- static void create_date_period_interval (timelib_rel_time * interval , zval * zv )
5242
- {
5243
- if (interval ) {
5244
- php_interval_obj * interval_obj ;
5245
- object_init_ex (zv , date_ce_interval );
5246
- interval_obj = Z_PHPINTERVAL_P (zv );
5247
- interval_obj -> diff = timelib_rel_time_clone (interval );
5248
- interval_obj -> initialized = 1 ;
5249
- } else {
5250
- ZVAL_NULL (zv );
5251
- }
5252
- }
5253
-
5254
- static void initialize_date_period_properties (php_period_obj * period_obj )
5255
- {
5256
- zval start_zv , current_zv , end_zv , interval_zv ;
5257
-
5258
- if (UNEXPECTED (!period_obj -> std .properties )) {
5259
- rebuild_object_properties (& period_obj -> std );
5260
- }
5261
-
5262
- create_date_period_datetime (period_obj -> start , period_obj -> start_ce , & start_zv );
5263
- zend_update_property (date_ce_period , & period_obj -> std , "start" , sizeof ("start" ) - 1 , & start_zv );
5264
- zval_ptr_dtor (& start_zv );
5265
-
5266
- create_date_period_datetime (period_obj -> current , period_obj -> start_ce , & current_zv );
5267
- zend_string * property_name = zend_string_init ("current" , sizeof ("current" ) - 1 , 0 );
5268
- zend_std_write_property (& period_obj -> std , property_name , & current_zv , NULL );
5269
- zval_ptr_dtor (& current_zv );
5270
- zend_string_release (property_name );
5271
-
5272
- create_date_period_datetime (period_obj -> end , period_obj -> start_ce , & end_zv );
5273
- zend_update_property (date_ce_period , & period_obj -> std , "end" , sizeof ("end" ) - 1 , & end_zv );
5274
- zval_ptr_dtor (& end_zv );
5275
-
5276
- create_date_period_interval (period_obj -> interval , & interval_zv );
5277
- zend_update_property (date_ce_period , & period_obj -> std , "interval" , sizeof ("interval" ) - 1 , & interval_zv );
5278
- zval_ptr_dtor (& interval_zv );
5279
-
5280
- zend_update_property_long (date_ce_period , & period_obj -> std , "recurrences" , sizeof ("recurrences" ) - 1 , (zend_long ) period_obj -> recurrences );
5281
- zend_update_property_bool (date_ce_period , & period_obj -> std , "include_start_date" , sizeof ("include_start_date" ) - 1 , period_obj -> include_start_date );
5282
- }
0 commit comments