PHPerKaigi 2024

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."

add a note

User Contributed Notes 1 note

up
8
Ta7To7
6 years ago
Note that using Incrementing/Decrementing operators on string is legal
<?php
$str
= "";
echo ++
$str; // output: 1
?>
To Top