@@ -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
@@ -1434,6 +1430,62 @@ PHP_FUNCTION(getdate)
1434
1430
1435
1431
#define PHP_DATE_PERIOD_EXCLUDE_START_DATE 0x0001
1436
1432
1433
+ static void create_date_period_datetime (timelib_time * datetime , zend_class_entry * ce , zval * zv )
1434
+ {
1435
+ if (datetime ) {
1436
+ php_date_obj * date_obj ;
1437
+
1438
+ object_init_ex (zv , ce );
1439
+ date_obj = Z_PHPDATE_P (zv );
1440
+ date_obj -> time = timelib_time_clone (datetime );
1441
+ } else {
1442
+ ZVAL_NULL (zv );
1443
+ }
1444
+ }
1445
+
1446
+ static void create_date_period_interval (timelib_rel_time * interval , zval * zv )
1447
+ {
1448
+ if (interval ) {
1449
+ php_interval_obj * interval_obj ;
1450
+
1451
+ object_init_ex (zv , date_ce_interval );
1452
+ interval_obj = Z_PHPINTERVAL_P (zv );
1453
+ interval_obj -> diff = timelib_rel_time_clone (interval );
1454
+ interval_obj -> initialized = 1 ;
1455
+ } else {
1456
+ ZVAL_NULL (zv );
1457
+ }
1458
+ }
1459
+
1460
+ static void initialize_date_period_properties (php_period_obj * period_obj )
1461
+ {
1462
+ zval start_zv , current_zv , end_zv , interval_zv ;
1463
+
1464
+ if (UNEXPECTED (!period_obj -> std .properties )) {
1465
+ rebuild_object_properties (& period_obj -> std );
1466
+ }
1467
+
1468
+ create_date_period_datetime (period_obj -> start , period_obj -> start_ce , & start_zv );
1469
+ zend_update_property (date_ce_period , & period_obj -> std , "start" , sizeof ("start" ) - 1 , & start_zv );
1470
+ zval_ptr_dtor (& start_zv );
1471
+
1472
+ create_date_period_datetime (period_obj -> current , period_obj -> start_ce , & current_zv );
1473
+ zend_string * property_name = zend_string_init ("current" , sizeof ("current" ) - 1 , 0 );
1474
+ zend_std_write_property (& period_obj -> std , property_name , & current_zv , NULL );
1475
+ zval_ptr_dtor (& current_zv );
1476
+ zend_string_release (property_name );
1477
+
1478
+ create_date_period_datetime (period_obj -> end , period_obj -> start_ce , & end_zv );
1479
+ zend_update_property (date_ce_period , & period_obj -> std , "end" , sizeof ("end" ) - 1 , & end_zv );
1480
+ zval_ptr_dtor (& end_zv );
1481
+
1482
+ create_date_period_interval (period_obj -> interval , & interval_zv );
1483
+ zend_update_property (date_ce_period , & period_obj -> std , "interval" , sizeof ("interval" ) - 1 , & interval_zv );
1484
+ zval_ptr_dtor (& interval_zv );
1485
+
1486
+ zend_update_property_long (date_ce_period , & period_obj -> std , "recurrences" , sizeof ("recurrences" ) - 1 , (zend_long ) period_obj -> recurrences );
1487
+ zend_update_property_bool (date_ce_period , & period_obj -> std , "include_start_date" , sizeof ("include_start_date" ) - 1 , period_obj -> include_start_date );
1488
+ }
1437
1489
1438
1490
/* define an overloaded iterator structure */
1439
1491
typedef struct {
@@ -5283,58 +5335,3 @@ static zval *date_period_get_property_ptr_ptr(zend_object *object, zend_string *
5283
5335
5284
5336
return zend_std_get_property_ptr_ptr (object , name , type , cache_slot );
5285
5337
}
5286
-
5287
- static void create_date_period_datetime (timelib_time * datetime , zend_class_entry * ce , zval * zv )
5288
- {
5289
- if (datetime ) {
5290
- php_date_obj * date_obj ;
5291
- object_init_ex (zv , ce );
5292
- date_obj = Z_PHPDATE_P (zv );
5293
- date_obj -> time = timelib_time_clone (datetime );
5294
- } else {
5295
- ZVAL_NULL (zv );
5296
- }
5297
- }
5298
-
5299
- static void create_date_period_interval (timelib_rel_time * interval , zval * zv )
5300
- {
5301
- if (interval ) {
5302
- php_interval_obj * interval_obj ;
5303
- object_init_ex (zv , date_ce_interval );
5304
- interval_obj = Z_PHPINTERVAL_P (zv );
5305
- interval_obj -> diff = timelib_rel_time_clone (interval );
5306
- interval_obj -> initialized = 1 ;
5307
- } else {
5308
- ZVAL_NULL (zv );
5309
- }
5310
- }
5311
-
5312
- static void initialize_date_period_properties (php_period_obj * period_obj )
5313
- {
5314
- zval start_zv , current_zv , end_zv , interval_zv ;
5315
-
5316
- if (UNEXPECTED (!period_obj -> std .properties )) {
5317
- rebuild_object_properties (& period_obj -> std );
5318
- }
5319
-
5320
- create_date_period_datetime (period_obj -> start , period_obj -> start_ce , & start_zv );
5321
- zend_update_property (date_ce_period , & period_obj -> std , "start" , sizeof ("start" ) - 1 , & start_zv );
5322
- zval_ptr_dtor (& start_zv );
5323
-
5324
- create_date_period_datetime (period_obj -> current , period_obj -> start_ce , & current_zv );
5325
- zend_string * property_name = zend_string_init ("current" , sizeof ("current" ) - 1 , 0 );
5326
- zend_std_write_property (& period_obj -> std , property_name , & current_zv , NULL );
5327
- zval_ptr_dtor (& current_zv );
5328
- zend_string_release (property_name );
5329
-
5330
- create_date_period_datetime (period_obj -> end , period_obj -> start_ce , & end_zv );
5331
- zend_update_property (date_ce_period , & period_obj -> std , "end" , sizeof ("end" ) - 1 , & end_zv );
5332
- zval_ptr_dtor (& end_zv );
5333
-
5334
- create_date_period_interval (period_obj -> interval , & interval_zv );
5335
- zend_update_property (date_ce_period , & period_obj -> std , "interval" , sizeof ("interval" ) - 1 , & interval_zv );
5336
- zval_ptr_dtor (& interval_zv );
5337
-
5338
- zend_update_property_long (date_ce_period , & period_obj -> std , "recurrences" , sizeof ("recurrences" ) - 1 , (zend_long ) period_obj -> recurrences );
5339
- zend_update_property_bool (date_ce_period , & period_obj -> std , "include_start_date" , sizeof ("include_start_date" ) - 1 , period_obj -> include_start_date );
5340
- }
0 commit comments