Although most existing PHP 5 code should work without changes, please take note of some backward incompatible changes:
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:
<?php
class C {
const ONE = 1;
public $array = [
self::ONE => 'foo',
'bar',
'quux',
];
}
var_dump((new C)->array);
?>
O exemplo acima irá imprimir no PHP 5.5:
array(2) { [0]=> string(3) "bar" [1]=> string(4) "quux" }
O exemplo acima irá imprimir no PHP 5.6:
array(3) { [1]=> string(3) "foo" [2]=> string(3) "bar" [3]=> string(4) "quux" }
json_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.
Todos os streams criptografados agora tem verificação de peer ativado por padrão. Assim, a coleção de CAs padrão do OpenSSL será utilizado para verificar o certificado do peer. Na maioria dos casos, não será necessário modificações para se comunicar com servidores com certificados válidos pois as distribuições geralmente configuram o OpenSSL com boas coleções de CA.
A coleção de CAs padrão pode ser substituída globalmente configurando-se
as diretivas openssl.cafile ou openssl.capath, ou
por requisição utilizando-se as ações
cafile
ou
capath
no parâmetro contexto.
Embora não recomendado no geral, é possível desabilitar a verificação de certificado
do peer numa requisição configurando-se a opção de contexto
verify_peer
para FALSE
, e até desabilitar a verificação do nome do peer configurando-se a opção
verify_peer_name
para false FALSE
.
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_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.
Uploads using the @file syntax now require CURLOPT_SAFE_UPLOAD to be set to
FALSE
. CURLFile should be used instead.