Outras alterações
Avisos e alertas em aritmética com strings inválidas
Novos erros de nível E_WARNING
e E_NOTICE
foram introduzidos para quando strings inválidas forem convertidas à força usando operadores
que esperam por números (+
-
*
/
**
%
<<
>>
|
&
^
) ou seus
equivalentes de atribuição. Um E_NOTICE
é emitido quando a
string começa com um valor numérico mas contém caracteres não numéricos
no final, e um E_WARNING
é emitido quando a string
não contém um valor numérico.
<?php
'1b' + 'something';
O exemplo acima produzirá:
Notice: A non well formed numeric value encountered in %s on line %d Warning: A non-numeric value encountered in %s on line %d
Alerta em sobrecarga de sequencia de escape octal
Anteriormente, sequencias de escape de string octal com 3 octetos iriam transbordar silenciosamente.
Agora, eles ainda transbordam, mas um E_WARNING
será
emitido.
<?php
var_dump("\500");
O exemplo acima produzirá:
Warning: Octal escape sequence overflow \500 is greater than \377 in %s on line %d string(1) "@"
Correções de inconsistências para $this
Mesmo que $this
seja considerada uma variável especial no PHP, faltava
a ela verificações adequadas para garantir que não fosse usada como nome de variável ou
reatribuída. Isto agora foi retificado para garantir que
$this
não possa ser uma variável definida pelo usuário, não possa ser reatribuída a um
valor diferente, e nem possa ser globalizada.
Geração de ID de sessão sem hash
IDs de sessão não irão mais sofrer hash em sua geração. Esta alteração também resulta na remoção destas quatro configurações ini:
-
session.entropy_file
-
session.entropy_length
-
session.hash_function
-
session.hash_bits_per_character
E na adição das duas configurações a seguir:
-
session.sid_length
- define o comprimento do ID de sessão, com padrão de 32 caracteres para retro-compatibilidade) -
session.sid_bits_per_character
- define o número de bits armazenados por caractere (isto é, aumenta a faixa de caracteres que podem ser usados no ID de sessão), com padrão de 4 para retro-compatibilidade.
Alterações na manipulação de arquivo INI
precision
-
Se o valor for definido para -1, o dtoa modo 0 é usado. O padrão ainda é 14.
serialize_precision
-
Se o valor for definido para -1, o dtoa modo 0 é usado. O valor -1 agora é usado por padrão.
gd.jpeg_ignore_warning
-
O padrão desta configuração do php.ini foi alterado para 1, portanto por padrão os alertas da libjpeg são ignorados.
opcache.enable_cli
-
O padrão desta configuração do php.ini foi alterado para 1 (habilitado) no PHP 7.1.2, e de volta para 0 (desabilitado) no PHP 7.1.7.
Geração de ID de sessão com um CSPRNG somente
IDs de sessão agora serão gerados somente com um CSPRNG (gerador de número pseudo-randômico criptograficamente seguro).
Mensagens de TypeError mais informativas quando null
é permitido
Exceções TypeError para varificações de tipo arg_info irão
agora fornecer mensagens de erro mais informativas. Se o tipo do parâmetro ou do retorno
aceitar null
(por ter um valor padrão de null
ou por ser um tipo
anulável), o texto do erro agora mencionará isto com uma mensagem
de "must be ... or null" ou "must ... or be null."