Backward incompatible changes
Although most existing PHP 5 code should work without changes, please take
note of some backward incompatible changes:
Array keys won't be overwritten when defining an array as a property of a class via an array literal
Previously, arrays declared as class properties which mixed explicit and
implicit keys could have array elements silently overwritten if an explicit
key was the same as a sequential implicit key. For example:
'foo',
'bar',
'quux',
];
}
var_dump((new C)->array);
?>
]]>
&example.outputs.55;
string(3) "bar"
[1]=>
string(4) "quux"
}
]]>
&example.outputs.56;
string(3) "foo"
[2]=>
string(3) "bar"
[3]=>
string(4) "quux"
}
]]>
json_decode strictnessjson_decode now rejects non-lowercase variants of the
JSON literals true, false and
null at all times, as per the JSON specification, and
sets json_last_error accordingly. Previously, inputs
to json_decode that consisted solely of one of these
values in upper or mixed case were accepted.
This change will only affect cases where invalid JSON was being passed to
json_decode: valid JSON input is unaffected and will
continue to be parsed normally.
Stream wrappers now verify peer certificates and host names by default when using SSL/TLS
&migration56.openssl.peer-verification;
GMP resources are now objects
GMP resources are now objects. The
functional API implemented in the GMP extension has not changed, and code
should run unmodified unless it checks explicitly for a resource using
is_resource or similar.
Mcrypt functions now require valid keys and IVsmcrypt_encrypt, mcrypt_decrypt,
mcrypt_cbc, mcrypt_cfb,
mcrypt_ecb, mcrypt_generic and
mcrypt_ofb will no longer accept keys or IVs with
incorrect sizes, and block cipher modes that require IVs will now fail if
an IV isn't provided.
cURL file uploads
Uploads using the @file syntax now require CURLOPT_SAFE_UPLOAD to be set to
&false;. CURLFile should be used instead.