Alterações incompatíveis com versões anteriores
Converte chaves numéricas durante conversões de objetos e arrays
Chaves númericas agora são melhor manipuladas ao converter arrays para objetos e
objetos para arrays (conversão explícita ou pela função
settype()).
Isto siginifica que chaves de números inteiros (ou de strings numéricas) de arrays sendo convertidos
para objetos agora são acessíveis:
E chaves de números inteiros (ou de strings numéricas) de objetos sendo convertidos
para arrays agora são acessíveis:
Não é permitido passar null
para get_class()
Anteriormente, passar null
para a função get_class()
mostraria o nome da classe de onde a função foi chamada. Este comportamento agora foi
removido, e um alerta E_WARNING
será emitido. Para
obter o mesmo comportamento anterior, o argumento deve simplesmente ser omitido.
Alerta ao contar tipos não contáveis
Um alerta E_WARNING
agora será emitido ao se tentar usar a função
count() em tipos não contáveis (isto inclui o apelido
sizeof()).
ext/hash foi movido de recurso para objeto
Como parte da migração de longo prazo, a extensão Hash
foi atualizada para utilizar objetos ao invés de recursos. A alteração deve ser
transparente para desenvolvedores PHP, exceto onde
houver a função is_resource() (que precisará ser
atualizado para is_object()).
Melhoria nos padrões SSL/TLS
As seguinte alterações aos padrões foram feitas:
-
tls://
agora tem os padrões TLSv1.0 ou TLSv1.1 ou TLSv1.2
-
ssl://
é um apelido para tls://
-
Constantes
STREAM_CRYPTO_METHOD_TLS_*
têm os padrões TLSv1.0
ou TLSv1.1 + TLSv1.2, ao invés de somente TLSv1.0
Valor de retorno de gettype() em recursos fechados
Anteriormente, usar gettype() em um recurso fechado
retornaria uma string "unknown type"
. Agora, uma string
"resource (closed)"
será retornada.
is_object() e __PHP_Incomplete_Class
Anteriormente, usar is_object() na classe
__PHP_Incomplete_Class retornaria false
.
Agora, true
será retornado.
Promoção do nível de erro de constantes indefinidas
Referências não qualificadas a constantes indefinidas agora irão gerar um
E_WARNING
(ao invés de um E_NOTICE
).
Não próxima versão maior do PHP, elas irão gerar exceções
Error.
Suporte ao Windows
As versões mínimas do Windows oficialmente suportadas são agora Windows 7 e Windows Server
2008 R2.
Verificações nos valores padrões de propriedades de traits
Verificações de compatibilidade em valores padrões de propriedades de traits não irão mais
realizar conversões.
object
para nomes de classe
O nome object
era fracamente reservado no PHP 7.0.
Agora é estritamente reservados, e é proibido usá-lo como nome de classe, trait
ou interface.
Suporte a NetWare
O suporte a NetWare agora foi removido.
Enquanto array_unique() com SORT_STRING
anteriormente copiava o array e removia elementos não únicos (sem empactotar
o array depois), agora o novo array é construído com a adição dos
elementos únicos. Isto pode resultar em índices numéricos diferentes.
Alterações em bcmod() com números do tipo float
A função bcmod() não trunca mais números
fracionários para inteiros. Assim sendo, seu comportamento agora segue o da função
fmod(), ao invés do operador %
.
Por exemplo, bcmod('4', '3.5')
agora retorna
0.5
ao invés de 1
.
A opção da função json_decode(),
JSON_OBJECT_AS_ARRAY
, agora é usada se o segundo
parâmetro (assoc) for null
. Anteriormente,
JSON_OBJECT_AS_ARRAY
era sempre ignorado.
Sequências geradas por rand() e
mt_rand() para uma semente específica podem ser diferentes do PHP 7.1 em
máquinas de 64 bits (devido à correção de um problema de polarização de resto de divisão na
implementação).
Remoção da condifuração ini sql.safe_mode
A configuração ini sql.safe_mode
agora foi removida.
Cookies Recebidos
A partir do PHP 7.2.34, os nomes de cookies recebidos não são
mais decodificados como url por questões de segurança.