|
Backward Incompatible Changes
Although most existing PHP 5 code should work without changes, please take
note of some backward incompatible changes:
-
Safe mode is no
longer supported. Any applications that rely on safe mode may need
adjustment, in terms of security.
-
Magic quotes has been removed. Applications relying
on this feature may need to be updated, to avoid security issues.
get_magic_quotes_gpc and get_magic_quotes_runtime
now always return
FALSE . set_magic_quotes_runtime raises an
E_CORE_ERROR level error.
-
The register_globals and
register_long_arrays php.ini directives
have been removed.
-
Call-time pass by reference has been removed.
-
The break
and continue
statements no longer accept variable arguments (e.g., break 1 + foo() * $bar;).
Static arguments still work, such as break 2;. As a side effect of this change
break 0; and continue 0; are no longer allowed.
-
In the date and time extension, the timezone can no longer be
set using the TZ environment variable. Instead you have to specify a timezone using the
date.timezone php.ini option or date_default_timezone_set
function. PHP will no longer attempt to guess the timezone, and will instead fall back to "UTC" and issue
a
E_WARNING .
-
Non-numeric string offsets - e.g. $a['foo'] where $a is a string - now return
false on isset and true on empty, and produce a
E_WARNING
if you try to use them. Offsets of types double, bool and null produce a E_NOTICE . Numeric strings
(e.g. $a['2']) still work as before. Note that offsets like '12.3'
and '5 foobar' are considered non-numeric and produce a E_WARNING , but are converted
to 12 and 5 respectively, for backward compatibility reasons.
Note: Following code returns different result.
$str='abc';var_dump(isset($str['x'])); // false for PHP 5.4 or later, but true for 5.3 or less
-
Converting an array to a string will now generate an
E_NOTICE level
error, but the result of the cast will still be the string "Array".
-
Turning
NULL , FALSE , or an empty string into an object by adding a property
will now emit an E_WARNING level error, instead of E_STRICT .
-
Parameter names that shadow super globals now cause a fatal error. This prohibits code like
function foo($_GET, $_POST) {}.
-
The Salsa10 and Salsa20 hash algorithms have been removed.
-
array_combine now returns array() instead of
FALSE
when two empty arrays are provided as parameters.
-
If you use htmlentities with asian character sets, it
works like htmlspecialchars - this has always been the
case in previous versions of PHP, but now an
E_STRICT
level error is emitted.
The following keywords are now reserved, and may not be used
as names by functions, classes, etc.
The following functions have been removed from PHP:
-
define_syslog_variables
-
import_request_variables
-
session_is_registered, session_register
and session_unregister.
-
The aliases
mysqli_bind_param, mysqli_bind_result,
mysqli_client_encoding, mysqli_fetch,
mysqli_param_count, mysqli_get_metadata,
mysqli_send_long_data, mysqli::client_encoding() and mysqli_stmt::stmt().
|