Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions UPGRADING
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,37 @@ PHP 8.4 UPGRADE NOTES
4. Deprecated Functionality
========================================

- Date:
. Calling DatePeriod::__construct(string $isostr, int $options = 0) is
deprecated. Use DatePeriod::createFromISO8601String() instead.

- Intl:
. Calling intlcal_set() as well as calling IntlCalendar::set() with
more than 2 arguments is deprecated. Use either IntlCalendar::setDate()
or IntlCalendar::setDateTime() instead.
. Calling intlgregcal_create_instance() as well as calling
IntlGregorianCalendar::__construct() with more than 2 arguments is
deprecated. Use either IntlGregorianCalendar::createFromDate() or
IntlGregorianCalendar::createFromDateTime() instead.

- LDAP:
. Calling ldap_connect() with more than 2 arguments is deprecated. Use
ldap_connect_wallet() instead.
. Calling ldap_exop() with more than 4 arguments is deprecated. Use
ldap_exop_sync() instead.

- PgSQL:
. Calling pgsql_fetch_result() with 2 arguments is deprecated. Use the
3-parameter signature with a null $row parameter instead.
. Calling pg_field_prtlen() with 2 arguments is deprecated. Use the
3-parameter signature with a null $row parameter instead.
. Calling pg_field_is_null() with 2 arguments is deprecated. Use the
3-parameter signature with a null $row parameter instead.

- Reflection:
. Calling ReflectionMethod::__construct() with 1 argument is deprecated.
Use ReflectionMethod::createFromMethodName() instead.

========================================
5. Changed Functions
========================================
Expand Down
6 changes: 6 additions & 0 deletions ext/date/php_date.c
Original file line number Diff line number Diff line change
Expand Up @@ -5061,6 +5061,12 @@ PHP_METHOD(DatePeriod, __construct)
dpobj->current = NULL;

if (isostr) {
zend_error(E_DEPRECATED, "Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, "
"use DatePeriod::createFromISO8601String() instead");
if (UNEXPECTED(EG(exception))) {
RETURN_THROWS();
}

if (!date_period_init_iso8601_string(dpobj, date_ce_date, isostr, isostr_len, options, &recurrences)) {
RETURN_THROWS();
}
Expand Down
7 changes: 6 additions & 1 deletion ext/date/tests/DatePeriod_IteratorAggregate.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,8 @@ foreach ($period as $i => $notDate) {
}

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


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


Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in %s on line %d
0: 1
1: 2
2: 3
4 changes: 3 additions & 1 deletion ext/date/tests/DatePeriod_wrong_arguments.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,11 @@ try {
echo $e::class, ': ', $e->getMessage(), "\n";
}
?>
--EXPECT--
--EXPECTF--
OK
OK

Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in %s on line %d
OK
OK
TypeError: DatePeriod::__construct() accepts (DateTimeInterface, DateInterval, int [, int]), or (DateTimeInterface, DateInterval, DateTime [, int]), or (string [, int]) as arguments
3 changes: 2 additions & 1 deletion ext/date/tests/bug44562.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ foreach ( $dp as $d )
}

?>
--EXPECT--
--EXPECTF--
Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in %s on line %d
DateMalformedPeriodStringException: Unknown or bad format (2D)
DateMalformedPeriodStringException: Unknown or bad format (2D)
string(24) "2008-07-20T22:44:53+0200"
Expand Down
2 changes: 2 additions & 0 deletions ext/date/tests/bug54283.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,6 @@ try {
?>
--EXPECTF--
Deprecated: DatePeriod::__construct(): Passing null to parameter #1 ($start) of type string is deprecated in %s on line %d

Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in %s on line %d
string(24) "Unknown or bad format ()"
6 changes: 5 additions & 1 deletion ext/date/tests/date_interval_bad_format_leak.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,13 @@ try {
}

?>
--EXPECT--
--EXPECTF--
DateMalformedIntervalStringException: Unknown or bad format (P3"D)

Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in %s on line %d
DateMalformedPeriodStringException: Unknown or bad format (P3"D)
DateMalformedPeriodStringException: Unknown or bad format (P3"D)

Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in %s on line %d
DateMalformedPeriodStringException: Unknown or bad format (2008-03-01T12:00:00Z1)
DateMalformedPeriodStringException: Unknown or bad format (2008-03-01T12:00:00Z1)
7 changes: 6 additions & 1 deletion ext/date/tests/date_period_bad_iso_format.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,15 @@ try {
}

?>
--EXPECT--
--EXPECTF--
Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in %s on line %d
DateMalformedPeriodStringException: DatePeriod::__construct(): ISO interval must contain a start date, "R4" given
DateMalformedPeriodStringException: DatePeriod::createFromISO8601String(): ISO interval must contain a start date, "R4" given

Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in %s on line %d
DateMalformedPeriodStringException: DatePeriod::__construct(): ISO interval must contain an interval, "R4/2012-07-01T00:00:00Z" given
DateMalformedPeriodStringException: DatePeriod::createFromISO8601String(): ISO interval must contain an interval, "R4/2012-07-01T00:00:00Z" given

Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in %s on line %d
DateMalformedPeriodStringException: DatePeriod::__construct(): Recurrence count must be greater than 0
DateMalformedPeriodStringException: DatePeriod::createFromISO8601String(): Recurrence count must be greater than 0
2 changes: 1 addition & 1 deletion ext/intl/calendar/calendar.stub.php
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,7 @@ public function isSet(int $field): bool {}

/**
* @return true
* @alias intlcal_set
* @implementation-alias intlcal_set
*/
public function set(int $year, int $month, int $dayOfMonth = UNKNOWN, int $hour = UNKNOWN, int $minute = UNKNOWN, int $second = UNKNOWN) {} // TODO make return type void

Expand Down
2 changes: 1 addition & 1 deletion ext/intl/calendar/calendar_arginfo.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions ext/intl/calendar/calendar_methods.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -377,6 +377,14 @@ U_CFUNC PHP_FUNCTION(intlcal_set)

int arg_num = ZEND_NUM_ARGS() - (object ? 0 : 1);

if (object && arg_num > 2) {
zend_error(E_DEPRECATED, "Calling IntlCalendar::set() with more than 2 arguments is deprecated, "
"use either IntlCalendar::setDate() or IntlCalendar::setDateTime() instead");
if (UNEXPECTED(EG(exception))) {
RETURN_THROWS();
}
}

if (zend_parse_method_parameters(
ZEND_NUM_ARGS(), object, "Oll|llll",
&object, Calendar_ce_ptr, &args[0], &args[1], &args[2], &args[3], &args[4], &args[5]
Expand Down
8 changes: 8 additions & 0 deletions ext/intl/calendar/gregoriancalendar_methods.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,14 @@ static void _php_intlgregcal_constructor_body(
int variant;
intl_error_reset(NULL);

if (is_constructor && ZEND_NUM_ARGS() > 2) {
zend_error(E_DEPRECATED, "Calling IntlGregorianCalendar::__construct() with more than 2 arguments is deprecated, "
"use either IntlGregorianCalendar::createFromDate() or IntlGregorianCalendar::createFromDateTime() instead");
if (UNEXPECTED(EG(exception))) {
RETURN_THROWS();
}
}

// parameter number validation / variant determination
if (ZEND_NUM_ARGS() > 6 ||
zend_get_parameters_array_ex(ZEND_NUM_ARGS(), args) == FAILURE) {
Expand Down
2 changes: 2 additions & 0 deletions ext/intl/php_intl.stub.php
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,7 @@ function intlcal_after(IntlCalendar $calendar, IntlCalendar $other): bool {}

function intlcal_before(IntlCalendar $calendar, IntlCalendar $other): bool {}

/** @deprecated */
function intlcal_set(IntlCalendar $calendar, int $year, int $month, int $dayOfMonth = UNKNOWN, int $hour = UNKNOWN, int $minute = UNKNOWN, int $second = UNKNOWN): true {}

/** @param int|bool $value */
Expand Down Expand Up @@ -277,6 +278,7 @@ function intlcal_get_error_message(IntlCalendar $calendar): string|false {}
* @param int $hour
* @param int $minute
* @param int $second
* @deprecated
*/
function intlgregcal_create_instance($timezoneOrYear = UNKNOWN, $localeOrMonth = UNKNOWN, $day = UNKNOWN, $hour = UNKNOWN, $minute = UNKNOWN, $second = UNKNOWN): ?IntlGregorianCalendar {}

Expand Down
6 changes: 3 additions & 3 deletions ext/intl/php_intl_arginfo.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ var_dump(


?>
--EXPECT--
--EXPECTF--
Deprecated: Calling IntlGregorianCalendar::__construct() with more than 2 arguments is deprecated, use either IntlGregorianCalendar::createFromDate() or IntlGregorianCalendar::createFromDateTime() instead in %s on line %d
int(0)
Should be 3h30
int(3)
Expand Down
3 changes: 2 additions & 1 deletion ext/intl/tests/calendar_isSet_empty_time.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ var_dump($intlcal->get(IntlCalendar::FIELD_MINUTE));
var_dump($intlcal->isSet(IntlCalendar::FIELD_SECOND));

?>
--EXPECT--
--EXPECTF--
Deprecated: Calling IntlCalendar::set() with more than 2 arguments is deprecated, use either IntlCalendar::setDate() or IntlCalendar::setDateTime() instead in %s on line %d
bool(false)
int(58)
bool(true)
Expand Down
7 changes: 5 additions & 2 deletions ext/intl/tests/calendar_roll_basic.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,13 @@ var_dump($intlcal->get(IntlCalendar::FIELD_DAY_OF_MONTH)); //1


?>
--EXPECT--
--EXPECTF--
Deprecated: Calling IntlGregorianCalendar::__construct() with more than 2 arguments is deprecated, use either IntlGregorianCalendar::createFromDate() or IntlGregorianCalendar::createFromDateTime() instead in %s on line %d
bool(true)
int(1)
int(1)

Deprecated: Calling IntlGregorianCalendar::__construct() with more than 2 arguments is deprecated, use either IntlGregorianCalendar::createFromDate() or IntlGregorianCalendar::createFromDateTime() instead in %s on line %d
bool(true)
int(1)
int(1)
int(1)
2 changes: 2 additions & 0 deletions ext/intl/tests/calendar_roll_variation1.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ var_dump($intlcal->get(IntlCalendar::FIELD_DAY_OF_MONTH)); //28

?>
--EXPECTF--
Deprecated: Calling IntlGregorianCalendar::__construct() with more than 2 arguments is deprecated, use either IntlGregorianCalendar::createFromDate() or IntlGregorianCalendar::createFromDateTime() instead in %s on line %d

Deprecated: IntlCalendar::roll(): Passing bool is deprecated, use 1 or -1 instead in %s on line %d
bool(true)
int(1)
Expand Down
6 changes: 4 additions & 2 deletions ext/intl/tests/calendar_set_basic.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,10 @@ var_dump(intlcal_set($intlcal, IntlCalendar::FIELD_DAY_OF_MONTH, 3));
var_dump($intlcal->get(IntlCalendar::FIELD_DAY_OF_MONTH));

?>
--EXPECT--
--EXPECTF--
bool(true)
int(2)

Deprecated: Function intlcal_set() is deprecated in %s on line %d
bool(true)
int(3)
int(3)
9 changes: 8 additions & 1 deletion ext/intl/tests/calendar_set_error.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,16 @@ try {
echo $e->getMessage() . \PHP_EOL;
}
?>
--EXPECT--
--EXPECTF--
Deprecated: Calling IntlCalendar::set() with more than 2 arguments is deprecated, use either IntlCalendar::setDate() or IntlCalendar::setDateTime() instead in %s on line %d
IntlCalendar::set() expects at most 6 arguments, 7 given

Deprecated: Calling IntlCalendar::set() with more than 2 arguments is deprecated, use either IntlCalendar::setDate() or IntlCalendar::setDateTime() instead in %s on line %d
IntlCalendar::set() has no variant with exactly 4 parameters
IntlCalendar::set(): Argument #1 ($year) must be a valid field

Deprecated: Function intlcal_set() is deprecated in %s on line %d
intlcal_set(): Argument #2 ($year) must be a valid field

Deprecated: Function intlcal_set() is deprecated in %s on line %d
intlcal_set(): Argument #1 ($calendar) must be of type IntlCalendar, int given
9 changes: 7 additions & 2 deletions ext/intl/tests/calendar_set_variation1.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,18 @@ var_dump($intlcal->getTime(),
strtotime('2012-02-29 23:58:31 +0000') * 1000.);

?>
--EXPECT--
--EXPECTF--
Deprecated: Calling IntlCalendar::set() with more than 2 arguments is deprecated, use either IntlCalendar::setDate() or IntlCalendar::setDateTime() instead in %s on line %d
bool(true)
float(1330473600000)
float(1330473600000)

Deprecated: Calling IntlCalendar::set() with more than 2 arguments is deprecated, use either IntlCalendar::setDate() or IntlCalendar::setDateTime() instead in %s on line %d
bool(true)
float(1330559880000)
float(1330559880000)

Deprecated: Calling IntlCalendar::set() with more than 2 arguments is deprecated, use either IntlCalendar::setDate() or IntlCalendar::setDateTime() instead in %s on line %d
bool(true)
float(1330559911000)
float(1330559911000)
float(1330559911000)
3 changes: 2 additions & 1 deletion ext/intl/tests/calendar_toDateTime_basic.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ $dt = $cal->toDateTime();

var_dump($dt->format("c"), $dt->getTimeZone()->getName());
?>
--EXPECT--
--EXPECTF--
Deprecated: Calling IntlGregorianCalendar::__construct() with more than 2 arguments is deprecated, use either IntlGregorianCalendar::createFromDate() or IntlGregorianCalendar::createFromDateTime() instead in %s on line %d
string(25) "2012-05-17T17:35:36+01:00"
string(13) "Europe/Lisbon"
5 changes: 4 additions & 1 deletion ext/intl/tests/gregoriancalendar___construct_basic.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ var_dump($intlcal->getLocale(1));

var_dump($intlcal->getType());
?>
--EXPECT--
--EXPECTF--
Deprecated: Function intlgregcal_create_instance() is deprecated in %s on line %d
string(16) "Europe/Amsterdam"
string(5) "nl_NL"
string(13) "Europe/Lisbon"
Expand All @@ -40,6 +41,8 @@ string(16) "Europe/Amsterdam"
string(5) "pt_PT"
string(13) "Europe/Lisbon"
string(5) "pt_PT"

Deprecated: Calling IntlGregorianCalendar::__construct() with more than 2 arguments is deprecated, use either IntlGregorianCalendar::createFromDate() or IntlGregorianCalendar::createFromDateTime() instead in %s on line %d
string(12) "Europe/Paris"
string(5) "fr_CA"
string(9) "gregorian"
11 changes: 10 additions & 1 deletion ext/intl/tests/gregoriancalendar___construct_error.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,19 @@ try {
echo $e->getMessage(), "\n";
}
?>
--EXPECT--
--EXPECTF--
Deprecated: Function intlgregcal_create_instance() is deprecated in %s on line %d
Too many arguments

Deprecated: Function intlgregcal_create_instance() is deprecated in %s on line %d
Too many arguments

Deprecated: Function intlgregcal_create_instance() is deprecated in %s on line %d
No variant with 4 arguments (excluding trailing NULLs)

Deprecated: Calling IntlGregorianCalendar::__construct() with more than 2 arguments is deprecated, use either IntlGregorianCalendar::createFromDate() or IntlGregorianCalendar::createFromDateTime() instead in %s on line %d
No variant with 4 arguments (excluding trailing NULLs)

Deprecated: Calling IntlGregorianCalendar::__construct() with more than 2 arguments is deprecated, use either IntlGregorianCalendar::createFromDate() or IntlGregorianCalendar::createFromDateTime() instead in %s on line %d
IntlGregorianCalendar::__construct(): Argument #6 ($second) must be of type int, array given
IntlGregorianCalendar object is already constructed
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,13 @@ var_dump($intlcal->getTime(), (float)strtotime('2012-02-29 16:07:08') * 1000);

var_dump($intlcal->getType());
?>
--EXPECT--
--EXPECTF--
Deprecated: Function intlgregcal_create_instance() is deprecated in %s on line %d
string(16) "Europe/Amsterdam"
float(1330527600000)
float(1330527600000)

Deprecated: Calling IntlGregorianCalendar::__construct() with more than 2 arguments is deprecated, use either IntlGregorianCalendar::createFromDate() or IntlGregorianCalendar::createFromDateTime() instead in %s on line %d
float(1330528028000)
float(1330528028000)
string(9) "gregorian"
3 changes: 2 additions & 1 deletion ext/intl/tests/msgfmt_format_intlcalendar_variant2.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,6 @@ echo "msgf2: ", $msgf->format(array($time, 'date')), " ",
*/

?>
--EXPECT--
--EXPECTF--
Deprecated: Calling IntlGregorianCalendar::__construct() with more than 2 arguments is deprecated, use either IntlGregorianCalendar::createFromDate() or IntlGregorianCalendar::createFromDateTime() instead in %s on line %d
Quinta-feira, 17 de Maio de 2012 5:35:36 PM ptlis
Loading