Novas Funcionalidades
PHP Core
Sintaxe Heredoc e Nowdoc mais flexível
O marcador de fechamento para strings doc não precisa mais ser seguido por ponto-e-vírgula ou nova linha. Além disso, o marcador de fechamento pode ser recuado, caso em que o recuo será retirado de todas as linhas na string do documento.
A desestruturação de matriz suporta atribuições de referência
A desestruturação de matriz agora suporta atribuições de referência usando a sintaxe
[&$a, [$b, &$c]] = $d
O mesmo também é suportado
para list().
O operador Instanceof aceita Literais
instanceof
agora permite literais como o primeiro operando, caso em
que o resultado é sempre false
.
Exceção CompileError em vez de alguns Erros de Compilação
Uma nova exceção CompileError foi adicionada, da
qual ParseError herda. Um pequeno número de
erros de compilação agora lançará um CompileError
em vez de gerar um fatal error. Atualmente, isso afeta apenas erros de compilação
que podem ser lançados por token_get_all() no modo
TOKEN_PARSE
, mas mais erros podem ser convertidos
no futuro.
Vírgulas à direita são permitidas em chamadas
Agora são permitidas vírgulas à direita em chamadas de função e método.
Suporte Argon2id
O argumento de configuração --with-password-argon2[=dir]
agora fornece suporte para os hashes Argon2i e Argon2id nas funções
password_hash(), password_verify(),
password_get_info() e
password_needs_rehash(). As senhas podem ser hash e
verificadas usando a constante PASSWORD_ARGON2ID
.
O suporte para Argon2i e Argon2id nas funções password_*()
agora requer que o PHP seja vinculado à biblioteca de referência libargon2 ≥
20161029.
FastCGI Process Manager
Novas opções foram adicionadas para personalizar o log do FPM:
log_limit
- Esta opção global pode ser usada para definir o limite de log para a linha registrada, o que permite registrar mensagens com mais de 1024 caracteres sem quebrar. Ele também corrige vários problemas de empacotamento.
log_buffering
- Esta opção global permite um registro experimental sem buffer extra.
decorate_workers_output
-
Esta opção de pool permite desativar a decoração de saída para a saída dos workers
quando
catch_workers_output
estiver ativado.
Funções BC Math
bcscale() agora também pode ser usado como getter para recuperar a escala atual em uso.
Lightweight Directory Access Protocol
Suporte completo para controles LDAP foi adicionado às funções de consulta LDAP e ldap_parse_result():
-
Um parâmetro
$controls
para enviar controles para o servidor em ldap_add(), ldap_mod_replace(), ldap_mod_add(), ldap_mod_del(), ldap_rename(), ldap_compare(), ldap_delete(), ldap_modify_batch(), ldap_search(), ldap_list() e ldap_read() foi adicionado. -
O parâmetro de saída
$controls
para obter controles do servidor em ldap_parse_result() foi adicionado. -
Suporte para
LDAP_OPT_SERVER_CONTROLS
eLDAP_OPT_CLIENT_CONTROLS
em ldap_get_option() e ldap_set_option() foi corrigido.
Functions Multibyte String
Suporte completo para Case-Mapping e Case-Folding
Foi adicionado suporte para mapeamento completo de case-mapping e case-folding. Ao contrário do case-mapping simples, o case-mapping completo pode alterar o comprimento da string. Por exemplo:
<?php
mb_strtoupper("Straße");
// Produces STRAßE on PHP 7.2
// Produces STRASSE on PHP 7.3
?>
-
MB_CASE_LOWER
(usado por mb_strtolower()) -
MB_CASE_UPPER
(usado por mb_strtoupper()) -
MB_CASE_TITLE
-
MB_CASE_FOLD
-
MB_CASE_LOWER_SIMPLE
-
MB_CASE_UPPER_SIMPLE
-
MB_CASE_TITLE_SIMPLE
-
MB_CASE_FOLD_SIMPLE
(usado por operações Case-Insensitive)
As operações de string Case-Insensitive usam Case-Folding
As operações de string que não diferenciam maiúsculas de minúsculas agora usam case-folding em vez de case- mapping durante as comparações. Isso significa que mais caracteres serão considerados (sem distinção entre maiúsculas e minúsculas) iguais agora.
MB_CASE_TITLE executa conversão de Title-Case
mb_convert_case() com MB_CASE_TITLE
agora executa conversão de maiúsculas e minúsculas com base nas propriedades Unicode
derivadas de Cased e CaseIgnorable. Em particular, isso também melhora o tratamento de
aspas e apóstrofos.
Support Unicode 11
As tabelas de dados Multibyte String foram atualizadas para Unicode 11.
Suporte Long String
As funções Multibyte String Functions agora suportam corretamente strings maiores que 2 GB.
Melhorias de desempenho
O desempenho da extensão Multibyte String foi significativamente melhorado em todos os aspectos. As maiores melhorias estão nas funções de conversão de caso.
Suporte a Capturas Nomeadas
As funções mb_ereg_*
agora suportam capturas nomeadas.
Funções de correspondência como mb_ereg() agora retornarão capturas
nomeadas usando o número do grupo e o nome, semelhante ao PCRE:
<?php
mb_ereg('(?<word>\w+)', '国', $matches);
// => [0 => "国", 1 => "国", "word" => "国"];
?>
\k<>
and \k''
para fazer referência a capturas
nomeadas na string de substituição:
<?php
mb_ereg_replace('\s*(?<word>\w+)\s*', "_\k<word>_\k'word'_", ' foo ');
// => "_foo_foo_"
?>
\k<>
and \k''
também podem ser usados para referências
numeradas, que também funcionam com números de grupos maiores que 9.
Readline
O suporte para as opções completion_append_character
e
completion_suppress_append
foi adicionado a
readline_info(). Essas opções só estão disponíveis se o PHP
estiver vinculado a libreadline (ao invés de libedit).