@@ -177,17 +177,13 @@ static HashTable *date_object_get_gc_timezone(zend_object *object, zval **table,
177
177
static HashTable * date_object_get_debug_info_timezone (zend_object * object , int * is_temp );
178
178
static void php_timezone_to_string (php_timezone_obj * tzobj , zval * zv );
179
179
180
- static void create_date_period_datetime (timelib_time * datetime , zend_class_entry * ce , zval * zv );
181
- static void create_date_period_interval (timelib_rel_time * interval , zval * zv );
182
- static void initialize_date_period_properties (php_period_obj * period_obj );
183
-
184
180
static int date_interval_compare_objects (zval * o1 , zval * o2 );
185
181
static zval * date_interval_read_property (zend_object * object , zend_string * member , int type , void * * cache_slot , zval * rv );
186
182
static zval * date_interval_write_property (zend_object * object , zend_string * member , zval * value , void * * cache_slot );
187
183
static zval * date_interval_get_property_ptr_ptr (zend_object * object , zend_string * member , int type , void * * cache_slot );
188
- static zval * date_period_get_property_ptr_ptr (zend_object * object , zend_string * name , int type , void * * cache_slot );
189
184
static zval * date_period_read_property (zend_object * object , zend_string * name , int type , void * * cache_slot , zval * rv );
190
185
static zval * date_period_write_property (zend_object * object , zend_string * name , zval * value , void * * cache_slot );
186
+ static zval * date_period_get_property_ptr_ptr (zend_object * object , zend_string * name , int type , void * * cache_slot );
191
187
192
188
static int date_object_compare_timezone (zval * tz1 , zval * tz2 );
193
189
@@ -1432,6 +1428,62 @@ PHP_FUNCTION(getdate)
1432
1428
1433
1429
#define PHP_DATE_PERIOD_EXCLUDE_START_DATE 0x0001
1434
1430
1431
+ static void create_date_period_datetime (timelib_time * datetime , zend_class_entry * ce , zval * zv )
1432
+ {
1433
+ if (datetime ) {
1434
+ php_date_obj * date_obj ;
1435
+
1436
+ object_init_ex (zv , ce );
1437
+ date_obj = Z_PHPDATE_P (zv );
1438
+ date_obj -> time = timelib_time_clone (datetime );
1439
+ } else {
1440
+ ZVAL_NULL (zv );
1441
+ }
1442
+ }
1443
+
1444
+ static void create_date_period_interval (timelib_rel_time * interval , zval * zv )
1445
+ {
1446
+ if (interval ) {
1447
+ php_interval_obj * interval_obj ;
1448
+
1449
+ object_init_ex (zv , date_ce_interval );
1450
+ interval_obj = Z_PHPINTERVAL_P (zv );
1451
+ interval_obj -> diff = timelib_rel_time_clone (interval );
1452
+ interval_obj -> initialized = 1 ;
1453
+ } else {
1454
+ ZVAL_NULL (zv );
1455
+ }
1456
+ }
1457
+
1458
+ static void initialize_date_period_properties (php_period_obj * period_obj )
1459
+ {
1460
+ zval start_zv , current_zv , end_zv , interval_zv ;
1461
+
1462
+ if (UNEXPECTED (!period_obj -> std .properties )) {
1463
+ rebuild_object_properties (& period_obj -> std );
1464
+ }
1465
+
1466
+ create_date_period_datetime (period_obj -> start , period_obj -> start_ce , & start_zv );
1467
+ zend_update_property (date_ce_period , & period_obj -> std , "start" , sizeof ("start" ) - 1 , & start_zv );
1468
+ zval_ptr_dtor (& start_zv );
1469
+
1470
+ create_date_period_datetime (period_obj -> current , period_obj -> start_ce , & current_zv );
1471
+ zend_string * property_name = zend_string_init ("current" , sizeof ("current" ) - 1 , 0 );
1472
+ zend_std_write_property (& period_obj -> std , property_name , & current_zv , NULL );
1473
+ zval_ptr_dtor (& current_zv );
1474
+ zend_string_release (property_name );
1475
+
1476
+ create_date_period_datetime (period_obj -> end , period_obj -> start_ce , & end_zv );
1477
+ zend_update_property (date_ce_period , & period_obj -> std , "end" , sizeof ("end" ) - 1 , & end_zv );
1478
+ zval_ptr_dtor (& end_zv );
1479
+
1480
+ create_date_period_interval (period_obj -> interval , & interval_zv );
1481
+ zend_update_property (date_ce_period , & period_obj -> std , "interval" , sizeof ("interval" ) - 1 , & interval_zv );
1482
+ zval_ptr_dtor (& interval_zv );
1483
+
1484
+ zend_update_property_long (date_ce_period , & period_obj -> std , "recurrences" , sizeof ("recurrences" ) - 1 , (zend_long ) period_obj -> recurrences );
1485
+ zend_update_property_bool (date_ce_period , & period_obj -> std , "include_start_date" , sizeof ("include_start_date" ) - 1 , period_obj -> include_start_date );
1486
+ }
1435
1487
1436
1488
/* define an overloaded iterator structure */
1437
1489
typedef struct {
@@ -5275,58 +5327,3 @@ static zval *date_period_get_property_ptr_ptr(zend_object *object, zend_string *
5275
5327
5276
5328
return zend_std_get_property_ptr_ptr (object , name , type , cache_slot );
5277
5329
}
5278
-
5279
- static void create_date_period_datetime (timelib_time * datetime , zend_class_entry * ce , zval * zv )
5280
- {
5281
- if (datetime ) {
5282
- php_date_obj * date_obj ;
5283
- object_init_ex (zv , ce );
5284
- date_obj = Z_PHPDATE_P (zv );
5285
- date_obj -> time = timelib_time_clone (datetime );
5286
- } else {
5287
- ZVAL_NULL (zv );
5288
- }
5289
- }
5290
-
5291
- static void create_date_period_interval (timelib_rel_time * interval , zval * zv )
5292
- {
5293
- if (interval ) {
5294
- php_interval_obj * interval_obj ;
5295
- object_init_ex (zv , date_ce_interval );
5296
- interval_obj = Z_PHPINTERVAL_P (zv );
5297
- interval_obj -> diff = timelib_rel_time_clone (interval );
5298
- interval_obj -> initialized = 1 ;
5299
- } else {
5300
- ZVAL_NULL (zv );
5301
- }
5302
- }
5303
-
5304
- static void initialize_date_period_properties (php_period_obj * period_obj )
5305
- {
5306
- zval start_zv , current_zv , end_zv , interval_zv ;
5307
-
5308
- if (UNEXPECTED (!period_obj -> std .properties )) {
5309
- rebuild_object_properties (& period_obj -> std );
5310
- }
5311
-
5312
- create_date_period_datetime (period_obj -> start , period_obj -> start_ce , & start_zv );
5313
- zend_update_property (date_ce_period , & period_obj -> std , "start" , sizeof ("start" ) - 1 , & start_zv );
5314
- zval_ptr_dtor (& start_zv );
5315
-
5316
- create_date_period_datetime (period_obj -> current , period_obj -> start_ce , & current_zv );
5317
- zend_string * property_name = zend_string_init ("current" , sizeof ("current" ) - 1 , 0 );
5318
- zend_std_write_property (& period_obj -> std , property_name , & current_zv , NULL );
5319
- zval_ptr_dtor (& current_zv );
5320
- zend_string_release (property_name );
5321
-
5322
- create_date_period_datetime (period_obj -> end , period_obj -> start_ce , & end_zv );
5323
- zend_update_property (date_ce_period , & period_obj -> std , "end" , sizeof ("end" ) - 1 , & end_zv );
5324
- zval_ptr_dtor (& end_zv );
5325
-
5326
- create_date_period_interval (period_obj -> interval , & interval_zv );
5327
- zend_update_property (date_ce_period , & period_obj -> std , "interval" , sizeof ("interval" ) - 1 , & interval_zv );
5328
- zval_ptr_dtor (& interval_zv );
5329
-
5330
- zend_update_property_long (date_ce_period , & period_obj -> std , "recurrences" , sizeof ("recurrences" ) - 1 , (zend_long ) period_obj -> recurrences );
5331
- zend_update_property_bool (date_ce_period , & period_obj -> std , "include_start_date" , sizeof ("include_start_date" ) - 1 , period_obj -> include_start_date );
5332
- }
0 commit comments