A parameter's type is implicitly widened to accept null
if the default value for it is null
.
The following code:
<?php
function foo(T1 $a = null) {}
<?php
function foo(T1|null $a = null) {}
<?php
function foo(?T1 $a = null) {}
However, if such a parameter declaration is followed by a mandatory parameter:
<?php
function foo(T1 $a, T2 $b = null, T3 $c) {}
<?php
function foo(T1 $a, T2|null $b, T3 $c) {}
<?php
function foo(T1 $a, ?T2 $b, T3 $c) {}
Raising a number to the power of a negative number is equivalent to taking
the reciprocal of the number raised to the positive opposite of the power.
That is, 10-2
is the same as
1 / 102
.
Therefore raising 0
to the power of a negative number
corresponds to dividing by 0
, i.e.
0-2
is the same as
1 / 02
, or
1 / 0
. Thus, this behavior has been deprecated.
This affects the exponentiation operator **
and the pow() function.
If the IEEE 754 semantics are desired one should use the new fpow() function.
_
as class name
Naming a class _
is now deprecated:
<?php
class _ {}
Note:
Classes whose names start with an underscore are not deprecated:
<?php
class _MyClass {}
E_USER_ERROR
Calling trigger_error() with
error_level
being equal to
E_USER_ERROR
is now deprecated.
Such usages should be replaced by either throwing an exception, or calling exit(), whichever is more appropriate.
The CURLOPT_BINARYTRANSFER
constant is now deprecated.
The DatePeriod::__construct(string $isostr, int $options = 0)
signature has been deprecated.
Use DatePeriod::createFromISO8601String() instead.
The SUNFUNCS_RET_TIMESTAMP
,
SUNFUNCS_RET_STRING
,
and SUNFUNCS_RET_DOUBLE
constants are now deprecated.
This follows from the deprecation of the date_sunset() and
date_sunrise() functions in PHP 8.1.0.
Passing null
or false
to dba_key_split() is now
deprecated.
It would always return false
in those cases.
The DOM_PHP_ERR
constant is now deprecated.
The following properties have been formally deprecated:
Passing invalid options to hash functions is now deprecated.
Calling intlcal_set() or IntlCalendar::set() with more than two arguments is deprecated. Use either IntlCalendar::setDate() or IntlCalendar::setDateTime() instead.
Calling intlgregcal_create_instance() or IntlGregorianCalendar::__construct() with more than two arguments is deprecated. Use either IntlGregorianCalendar::createFromDate() or IntlGregorianCalendar::createFromDateTime() instead.
Calling ldap_connect() with more than two arguments is deprecated. Use ldap_connect_wallet() instead.
Calling ldap_exop() with more than four arguments is deprecated. Use ldap_exop_sync() instead.
The mysqli_ping() function and mysqli::ping() method are now deprecated as the reconnect feature was removed in PHP 8.2.0.
The mysqli_kill() function and
mysqli::kill() method
are now deprecated.
If this functionality is needed a SQL KILL
command
can be used instead.
The mysqli_refresh() function and
mysqli::refresh() method
are now deprecated.
If this functionality is needed a SQL FLUSH
command
can be used instead.
All MYSQLI_REFRESH_*
constants have been deprecated as well.
Passing the mode
parameter to
mysqli_store_result() explicitly has been deprecated.
As the MYSQLI_STORE_RESULT_COPY_DATA
constant was
only used in conjunction with this function it has also been deprecated.
Using escaped question marks (??
) inside
dollar-quoted strings is deprecated.
Because PDO_PGSQL now has its own SQL parser with dollar-quoted strings
support, it is no longer necessary to escape question marks inside them.
The 2 arguments signature of pg_fetch_result(),
pg_field_prtlen(), and
pg_field_is_null() is now deprecated.
Use the 3 arguments signature with row
set to
null
instead.
lcg_value() is now deprecated, as the function is broken in multiple ways. Use Random\Randomizer::getFloat() instead.
Calling ReflectionMethod::__construct() with one arguments is deprecated. Use ReflectionMethod::createFromMethodName() instead.
Calling session_set_save_handler() with more than two arguments is deprecated. Use the two arguments signature instead.
Changing the value of the
session.sid_length
and
session.sid_bits_per_character
INI settings is deprecated.
Update the session storage backend to accept 32 character hexadecimal
session IDs and stop changing these two INI settings instead.
Changing the value of the
session.use_only_cookies
,
session.use_trans_sid
,
session.trans_sid_tags
,
session.trans_sid_hosts
, and
session.referer_check
INI settings is deprecated.
The SID
constant is also deprecated.
Passing an int to SoapServer::addFunction() is now deprecated. If all PHP functions need to be provided flatten the array returned by get_defined_functions().
The SOAP_FUNCTIONS_ALL
constant is now deprecated.
The SplFixedArray::__wakeup() method is now deprecated, as it implements SplFixedArray::__serialize() and SplFixedArray::__unserialize() which need to be overwritten instead.
Using the default value for the escape
parameter for the
SplFileObject::setCsvControl(),
SplFileObject::fputcsv(), and
SplFileObject::fgetcsv() is now deprecated.
It must be passed explicitly either positionally or via named arguments.
This does not apply to SplFileObject::fputcsv()
and SplFileObject::fgetcsv() if
SplFileObject::setCsvControl() was used to set a
new default value.
Calling stream_context_set_option() with two arguments is deprecated. Use stream_context_set_options() instead.
Unserializing strings using the uppercase S
tag
with unserialize() is deprecated.
Using the default value for the escape
parameter for the
fputcsv(),
fgetcsv(), and
str_getcsv() is now deprecated.
It must be passed explicitly either positionally or via named arguments.
The xml_set_object() function has been deprecated.
Passing non-callable strings to the xml_set_()* functions is now deprecated.