Skip to content

Commit adc2642

Browse files
committed
Deprecate calling DatePeriod::__construct() with less than 3 arguments
1 parent 866aa12 commit adc2642

8 files changed

+34
-5
lines changed

UPGRADING

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,10 @@ PHP 8.4 UPGRADE NOTES
142142
4. Deprecated Functionality
143143
========================================
144144

145+
- Date:
146+
. Calling DatePeriod::__construct(string $isostr, int $options = 0) is
147+
deprecated. Use DatePeriod::createFromISO8601String() instead.
148+
145149
========================================
146150
5. Changed Functions
147151
========================================

ext/date/php_date.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5061,6 +5061,12 @@ PHP_METHOD(DatePeriod, __construct)
50615061
dpobj->current = NULL;
50625062

50635063
if (isostr) {
5064+
zend_error(E_DEPRECATED, "Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, "
5065+
"use DatePeriod::createFromISO8601String() instead");
5066+
if (UNEXPECTED(EG(exception))) {
5067+
RETURN_THROWS();
5068+
}
5069+
50645070
if (!date_period_init_iso8601_string(dpobj, date_ce_date, isostr, isostr_len, options, &recurrences)) {
50655071
RETURN_THROWS();
50665072
}

ext/date/tests/DatePeriod_IteratorAggregate.phpt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ foreach ($period as $i => $notDate) {
5858
}
5959

6060
?>
61-
--EXPECT--
61+
--EXPECTF--
62+
Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in %s on line %d
6263
0: 2012-07-01
6364
1: 2012-07-08
6465
2: 2012-07-15
@@ -79,10 +80,14 @@ foreach ($period as $i => $notDate) {
7980
1: 2012-07-08
8081
2: 2012-07-15
8182

83+
84+
Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in %s on line %d
8285
0: 2012-07-01
8386
1: 2012-07-08
8487
2: 2012-07-15
8588

89+
90+
Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in %s on line %d
8691
0: 1
8792
1: 2
8893
2: 3

ext/date/tests/DatePeriod_wrong_arguments.phpt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,11 @@ try {
2121
echo $e::class, ': ', $e->getMessage(), "\n";
2222
}
2323
?>
24-
--EXPECT--
24+
--EXPECTF--
2525
OK
2626
OK
27+
28+
Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in %s on line %d
2729
OK
2830
OK
2931
TypeError: DatePeriod::__construct() accepts (DateTimeInterface, DateInterval, int [, int]), or (DateTimeInterface, DateInterval, DateTime [, int]), or (string [, int]) as arguments

ext/date/tests/bug44562.phpt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ foreach ( $dp as $d )
2626
}
2727

2828
?>
29-
--EXPECT--
29+
--EXPECTF--
30+
Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in %s on line %d
3031
DateMalformedPeriodStringException: Unknown or bad format (2D)
3132
DateMalformedPeriodStringException: Unknown or bad format (2D)
3233
string(24) "2008-07-20T22:44:53+0200"

ext/date/tests/bug54283.phpt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,6 @@ try {
1212
?>
1313
--EXPECTF--
1414
Deprecated: DatePeriod::__construct(): Passing null to parameter #1 ($start) of type string is deprecated in %s on line %d
15+
16+
Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in %s on line %d
1517
string(24) "Unknown or bad format ()"

ext/date/tests/date_interval_bad_format_leak.phpt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,13 @@ try {
3434
}
3535

3636
?>
37-
--EXPECT--
37+
--EXPECTF--
3838
DateMalformedIntervalStringException: Unknown or bad format (P3"D)
39+
40+
Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in %s on line %d
3941
DateMalformedPeriodStringException: Unknown or bad format (P3"D)
4042
DateMalformedPeriodStringException: Unknown or bad format (P3"D)
43+
44+
Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in %s on line %d
4145
DateMalformedPeriodStringException: Unknown or bad format (2008-03-01T12:00:00Z1)
4246
DateMalformedPeriodStringException: Unknown or bad format (2008-03-01T12:00:00Z1)

ext/date/tests/date_period_bad_iso_format.phpt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,15 @@ try {
4040
}
4141

4242
?>
43-
--EXPECT--
43+
--EXPECTF--
44+
Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in %s on line %d
4445
DateMalformedPeriodStringException: DatePeriod::__construct(): ISO interval must contain a start date, "R4" given
4546
DateMalformedPeriodStringException: DatePeriod::createFromISO8601String(): ISO interval must contain a start date, "R4" given
47+
48+
Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in %s on line %d
4649
DateMalformedPeriodStringException: DatePeriod::__construct(): ISO interval must contain an interval, "R4/2012-07-01T00:00:00Z" given
4750
DateMalformedPeriodStringException: DatePeriod::createFromISO8601String(): ISO interval must contain an interval, "R4/2012-07-01T00:00:00Z" given
51+
52+
Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in %s on line %d
4853
DateMalformedPeriodStringException: DatePeriod::__construct(): Recurrence count must be greater than 0
4954
DateMalformedPeriodStringException: DatePeriod::createFromISO8601String(): Recurrence count must be greater than 0

0 commit comments

Comments
 (0)