Deprecated Features
PHP Core
Implementing Serializable without
__serialize and __unserialize
Either only the new methods should be implemented, if no support for
PHP prior to version 7.4 is provided, or both should be implemented.
Passing null
to non-nullable parameters of built-in functions
Scalar types for built-in functions are nullable by default.
This behaviour is deprecated to align with the behaviour of user-defined
functions, where scalar types need to be marked as nullable explicitly.
Implicit incompatible float to int conversions
The implicit conversion of float to int which
leads to a loss in precision is now deprecated.
This affects array keys, int type declarations in coercive mode,
and operators working on ints.
Calling a static element on a trait
Calling a static method, or accessing a
static property directly on a trait is deprecated.
Static methods and properties should only be accessed on a class using the trait.
Returning a non-array from __sleep
Returning a value which is not an array from
__sleep() now generates a diagnostic.
Returning by reference from a void function
Such a function is contradictory, and already emits the following
E_NOTICE
when called:
Only variable references should be returned by reference
.
Autovivification from false
Autovivification is the process of creating a new array when
appending to a value.
Autovivification is prohibited from scalar values, false
however
was an exception. This is now deprecated.
Note:
Autovivification from null
and undefined values is still allowed:
ctype
Verifying non-string arguments
Passing a non-string argument is deprecated.
In the future, the argument will be interpreted as a string instead
of an ASCII codepoint.
Depending on the intended behavior, the argument should either be
cast to string or an explicit call to
chr should be made.
All ctype_*()
functions are affected.
Date
date_sunrise and date_sunset
have been deprecated in favor of date_sun_info.
strptime has been deprecated.
Use date_parse_from_format instead (for locale-independent parsing),
or IntlDateFormatter::parse (for locale-dependent parsing).
strftime and gmstrftime have been deprecated.
Use date instead (for locale-independent formatting),
or IntlDateFormatter::format (for locale-dependent formatting).
Filter
The FILTER_SANITIZE_STRING
and
FILTER_SANITIZE_STRIPPED
filters are deprecated.
The filter.default
INI directive is deprecated.
GD
The num_points
of imagepolygon,
imageopenpolygon and imagefilledpolygon
has been deprecated.
Hash
The mhash,
mhash_keygen_s2k,
mhash_count,
mhash_get_block_size,
and mhash_get_hash_name have been deprecated.
Use the hash_*()
functions instead.
IMAP
The NIL
constant has been deprecated.
Use 0
instead.
Intl
Calling IntlCalendar::roll with a
bool argument is deprecated.
Use 1
and -1
instead of
true
and false
respectively.
Multibyte String
Calling mb_check_encoding without any arguments
is deprecated.
MySQLi
The mysqli_driver::$driver_version property
has been deprecated.
It was meaningless and outdated, use PHP_VERSION_ID
instead.
Calling mysqli::get_client_info or
mysqli_get_client_info with the
mysqli
argument has been deprecated.
Call mysqli_get_client_info without any arguments
to obtain the version information of the client library.
The mysqli::init method has been deprecated.
Replace calls to parent::init with
parent::__construct.
ODBC
odbc_result_all has been deprecated.
PDO
The PDO::FETCH_SERIALIZE
fetch mode has been deprecated.
PgSQL
Not passing the connection argument to all pgsql_*()
functions has been deprecated.
SOAP
The ssl_method
option of
SoapClient::__construct has been deprecated
in favor of SSL stream context options.
Standard
Calling key, current,
next, prev,
reset, or end
on objects is deprecated.
Either convert the object to an array using get_mangled_object_vars
first, or use the methods provided by a class that implements
Iterator, such as ArrayIterator, instead.
The auto_detect_line_endings
INI directive is deprecated.
If necessary, handle "\r"
line breaks manually instead.
The FILE_BINARY
and
FILE_TEXT
constants have been deprecated.
They never had any effect.