O que há de novo no PHP 7.3?

is countable rfc
PHP 7.2 adicionou um aviso ao contar objetos incontáveis. A
função é contável pode ajudar a evitar esse aviso.

$ count = é contável ($ variável)? contagem ($ variável): nulo;
array
key first e array key_last rfc
Essas duas funções basicamente fazem o que o nome diz.

$ array = [
‘a’ => ‘…’,
‘b’ => ‘…’,
‘c’ => ‘…’,
];

chave de array primeiro ($ array); // chave de
array ‘a’ last ($ array); // ‘c’ O RFC original também propôs o valor do array primeiro e o valor do array por último, mas estes foram votados contra pela maioria das pessoas.

Outra ideia para array first e array last foi proposta, que retornaria uma tupla [$ key => $ value], mas as opiniões eram misturadas. Por enquanto, temos apenas duas funções para obter a primeira e a última chave de um array.

Sintaxe flexível do Heredoc rfc
Heredoc pode ser uma ferramenta útil para strings maiores, embora eles tivessem uma peculiaridade de indentação no passado.

// Em vez disso:

$ query = <<< SQL
SELECT *
FROM table
WHERE column= true;
SQL;

// Você consegue fazer isso:

$ query = <<< SQL
SELECT *
FROM table
WHERE column= true;
SQL;
Isso é especialmente útil quando você está usando o Heredoc em um contexto já aninhado.

Os espaços em branco na frente do marcador de fechamento serão ignorados em todas as linhas.

Uma observação importante: devido a essa mudança, alguns Heredocs existentes podem quebrar, ao usar o mesmo marcador de fechamento em seu corpo.

$ str = <<< FOO
abcdefg
FOO
FOO;

// Erro de análise: nível de indentação de corpo inválido no PHP 7.3
Vírgulas de cauda em chamadas de função rfc
O que já era possível com arrays, agora também pode ser feito com chamadas de função. Observe que não é possível nas definições de função!

$ compacted = compact (
‘posts’,
‘unidades’,
);
Melhor tipo de relatório de erro
TypeErrors para inteiros e booleanos usados ​​para imprimir esse nome completo, ele foi alterado para int e bool, para corresponder às dicas de tipo no código.

O argumento 1 passado para foo () deve ser do tipo int / bool
Em comparação com PHP 7.2:

O argumento 1 passado para foo () deve ser do tipo
inteiro / booleano.
Erros JSON podem ser lançados rfc
Anteriormente, os erros de análise JSON eram um incômodo para depurar. As funções JSON agora aceitam uma opção extra para fazê-las lançar uma exceção nos erros de análise. Essa mudança obviamente adiciona uma nova exceção: JsonException.

codificação json ($ data, JSON THROW ON ERROR);

decodificação json (“json inválido”, nulo, 512, JSON THROW ON ERROR);

// Lança JsonException
Embora esse recurso esteja disponível apenas com a opção recém-adicionada, há uma chance de que seja o comportamento padrão em uma versão futura.

atribuição de referência de lista rfc
O list () e sua sintaxe abreviada [] agora oferecem suporte a referências.

$ array = [1, 2];

lista ($ a, & $ b) = $ array;

$ b = 3;

// $ array = [1, 3];
Variáveis ​​indefinidas em compact rfc
Variáveis ​​indefinidas passadas para compact serão reportadas com um aviso, elas foram previamente ignoradas.

$ a = ‘foo’;

compacto (‘a’, ‘b’);

// Aviso: compact (): Variável indefinida: b
Constantes insensíveis a maiúsculas e minúsculas rfc
Havia alguns casos extremos em que constantes insensíveis a maiúsculas eram permitidas. Estes foram descontinuados.

Same site cookie rfc
Esta alteração não apenas adiciona um novo parâmetro, mas também muda a maneira como as funções setcookie, setrawcookie e session set cookie_params funcionam de maneira ininterrupta.

Em vez de mais um parâmetro adicionado a funções já enormes, eles agora oferecem suporte a um conjunto de opções, embora ainda sejam compatíveis com versões anteriores. Um exemplo:

bool setcookie (
string $ name
[, string $ value = “”
[, int $ expire = 0
[, string $ path = “”
[, string $ domain = “”
[, bool $ secure = false
[, bool $ httponly = falso]]]]]]
)

bool setcookie (
string $ name
[, string $ value = “”
[, int $ expire = 0
[, array $ options]]]
)

// Ambas as formas funcionam.
Várias depreciações rfc
Várias pequenas coisas foram descontinuadas, há uma possibilidade de que erros apareçam em seu código por causa disso.

Aliases de função mbstring não documentados Funções de
pesquisa de string com agulha inteira
fgetss () função e filtro de tags

string.strip Definindo uma função assert () independente FILTER FLAG SCHEME REQUIRED e FILTER FLAG HOST REQUIRED flags
pdo
odbc.db2 nome da instância diretiva php.ini