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.
null
to non-nullable parameters of built-in functionsScalar 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.
<?php
var_dump(str_contains("foobar", null));
// Deprecated: Passing null to parameter #2 ($needle) of type string
// is deprecated
?>
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.
<?php
$a = [];
$a[15.5]; // deprecated, as key value loses the 0.5 component
$a[15.0]; // ok, as 15.0 == 15
?>
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 value which is not an array from __sleep() now generates a diagnostic.
<?php
function &test(): void {}
?>
E_NOTICE
when called:
Only variable references should be returned by reference
.
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.
<?php
$arr = false;
$arr[] = 2; // deprecated
?>
Note:
Autovivification from
null
and undefined values is still allowed:<?php
// From undefined
$arr[] = 'some value';
$arr['doesNotExist'][] = 2;
// From null
$arr = null;
$arr[] = 2;
?>
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_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).
The FILTER_SANITIZE_STRING
and
FILTER_SANITIZE_STRIPPED
filters are deprecated.
The filter.default INI directive is deprecated.
The num_points
of imageopenpolygon()
and imagefilledpolygon() has been deprecated.
The mhash(),
mhash_keygen_s2k(),
mhash_count(),
mhash_get_block_size(),
and mhash_get_hash_name() have been deprecated.
Use the hash_*()
functions instead.
The NIL
constant has been deprecated.
Use 0
instead.
Calling IntlCalendar::roll() with a
bool argument is deprecated.
Use 1
and -1
instead of
true
and false
respectively.
Calling mb_check_encoding() without any arguments is deprecated.
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().
The oci8.old_oci_close_semantics INI directive is deprecated.
odbc_result_all() has been deprecated.
The PDO::FETCH_SERIALIZE
fetch mode has been deprecated.
Not passing the connection argument to all pgsql_*()
functions has been deprecated.
The ssl_method
option of
SoapClient::__construct() has been deprecated
in favor of SSL stream context options.
Calling key(), current(), next(), prev(), reset(), or end() on objects is deprecated. Either use get_mangled_object_vars() on the object first, or use ArrayIterator.
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.