Skip to content

Commit a8c369f

Browse files
committed
Fix code review
1 parent 38b1437 commit a8c369f

File tree

3 files changed

+60
-61
lines changed

3 files changed

+60
-61
lines changed

ext/date/php_date.c

Lines changed: 58 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -304,17 +304,13 @@ static HashTable *date_object_get_gc_timezone(zend_object *object, zval **table,
304304
static HashTable *date_object_get_debug_info_timezone(zend_object *object, int *is_temp);
305305
static void php_timezone_to_string(php_timezone_obj *tzobj, zval *zv);
306306

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-
311307
static int date_interval_compare_objects(zval *o1, zval *o2);
312308
static zval *date_interval_read_property(zend_object *object, zend_string *member, int type, void **cache_slot, zval *rv);
313309
static zval *date_interval_write_property(zend_object *object, zend_string *member, zval *value, void **cache_slot);
314310
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);
316311
static zval *date_period_read_property(zend_object *object, zend_string *name, int type, void **cache_slot, zval *rv);
317312
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);
318314

319315
static int date_object_compare_timezone(zval *tz1, zval *tz2);
320316

@@ -1399,6 +1395,63 @@ PHP_FUNCTION(getdate)
13991395
}
14001396
/* }}} */
14011397

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+
14021455
/* define an overloaded iterator structure */
14031456
typedef struct {
14041457
zend_object_iterator intern;
@@ -5225,58 +5278,3 @@ static zval *date_period_get_property_ptr_ptr(zend_object *object, zend_string *
52255278

52265279
return zend_std_get_property_ptr_ptr(object, name, type, cache_slot);
52275280
}
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-
}

ext/date/php_date.stub.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -684,6 +684,7 @@ public static function __set_state(array $array): DateInterval {}
684684
class DatePeriod implements IteratorAggregate
685685
{
686686
public readonly ?DateTimeInterface $start;
687+
/** @readonly */
687688
public ?DateTimeInterface $current;
688689
public readonly ?DateTimeInterface $end;
689690
public readonly ?DateInterval $interval;

ext/date/php_date_arginfo.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: d5f960d58c9577c755164d4372a2f4d70a3b1aaf */
2+
* Stub hash: dc54d1976c4fb2c5d1b7ee0bfe566abc8847c554 */
33

44
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_strtotime, 0, 1, MAY_BE_LONG|MAY_BE_FALSE)
55
ZEND_ARG_TYPE_INFO(0, datetime, IS_STRING, 0)

0 commit comments

Comments
 (0)